一、用sql函數
首先要創建一個截取字符串的函數,新建一個查詢,把下面代碼復制進去執行。
函數SqlitIn的第一個參數是儲存過程要in的字符串,第二個參數是分隔符
CREATE function SplitIn(@c varchar(200),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)<>0) begin insert @t(col)values (substring(@c,1,charindex(@split,@c)-1)) set @c=stuff(@c,1,charindex(@split,@c),'') end insert @t(col)values(@c) return end
此時在數據庫里 可以找到這樣的一個函數
這個函數的作法:
select col from SplitIn('00001,00002,00003',',') 得到的結果是
即把傳入的字符串'00001,00002,00003' 根據逗號分割,變成一個只有一列的表
最后儲存過程調用這個函數
declare @id nvarchar(200)
set @id='00001,00002,00003'
select * from A where id in(select col from SplitIn(@id,',')) 就ok 了
上面這句相當於select * from A where id in('00001','00002','00003')
二、用Exec
declare @itemid varchar(100)
set @itemid='''KDFCX030VL1'',''KDSCX000QX'''
exec('select * from yong_ue127diatable with(nolock) where itemid in('+@itemid+')')
這樣@兩側的''就會被+號作用掉
三、用CharIndex
declare @itemid varchar(100)
set @itemid='KDFCX030VL1,KDSCX000QX'
select * from yong_ue127diatable with(nolock) where charindex(','+ltrim(itemid)+',',','+@itemid+',')>0