存储过程中输入一个变量,带着单引号,可以replace吗?解决方法
存储过程中输入一个变量,带着单引号,可以replace吗?
下面为原来的存储过程
1、@id_check是输入变量。
2、@id_check的值由一个多选框构成。为记录的ID数。
3、多选后@id_check的值成为'1,2,3,5,10'
4、能不能REPLACE一下,将两边的单引号去掉呢?
因为我要用到 where id in (@id_check)这样的语句。
最好是能写成下面这样
------解决方案--------------------
------解决方案--------------------
动态拼接一下就可以了.类似这种:
下面为原来的存储过程
ALTER PROCEDURE [dbo].[存储过程名]
@id_check nvarchar(max)
AS
BEGIN
XXOO省略
END
1、@id_check是输入变量。
2、@id_check的值由一个多选框构成。为记录的ID数。
3、多选后@id_check的值成为'1,2,3,5,10'
4、能不能REPLACE一下,将两边的单引号去掉呢?
因为我要用到 where id in (@id_check)这样的语句。
最好是能写成下面这样
ALTER PROCEDURE [dbo].[存储过程名]
@id_check nvarchar(max)
AS
BEGIN
DECLARE @idgroup nvarchar(max) --这里定义一个新的变量
SET @idgroup=replace(@id_check,XXOO不会写) --这里去掉单引号后赋值给新变量
XXOO省略
END
------解决方案--------------------
ALTER PROCEDURE [dbo].[存储过程名]
@id_check nvarchar(max)
AS
BEGIN
update a
set a.mark = 2
from 表table a join (
select substring(@id_check,number,charindex(',',@id_check+',',number)-number) as colforID
from master..spt_values
where [type] = 'P' and number <= len(@id_check+',')
and charindex(@id_check,@id_check+',',number) = number
)b on a.id = b.colforID
END
------解决方案--------------------
动态拼接一下就可以了.类似这种:
declare @id_check nvarchar(max) --你的参数
declare @sql varchar(max)
set @sql='select * from tablename where id in ('+@id_chenk+')'
exec (@sql)