sql儲存過程in 多個引數

2022-02-01 18:03:13 字數 1288 閱讀 5354

首先要建立乙個擷取字串的函式,新建乙個查詢,把下面**複製進去執行。

函式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')

declare @itemid varchar(100)

set @itemid='''kdfcx030vl1'',''kdscx000qx'''

exec('select * from yong_ue127diatable with(nolock) where itemid in('+@itemid+')')

這樣@兩側的''就會被+號作用掉

declare @itemid varchar(100)

set @itemid='kdfcx030vl1,kdscx000qx'

select * from yong_ue127diatable with(nolock) where charindex(','+ltrim(itemid)+',',','+@itemid+',')>0

儲存過程 IN 多個引數解決

今天寫儲存過程的時候,遇到了傳入多個引數,不能用in匹配的問題。例如 傳入引數 b a b c pl sql語句 select from table where var in b 不能匹配,因為pl sql把b當做乙個完整的字串,select from table where var in a b ...

多個引數的儲存過程

今天寫了乙個通過多個引數查詢列表記錄的儲存過程,查詢和排序的時候涉及了多個表和字段,寫下來記錄一下.也給需要的同僚借鑑一下.正文如下 use dbname go object storedprocedure dbo getproductlistbymanyparams script date 07 ...

sql 返回多個值的儲存過程

create function dpm getvalue processmanageid varchar 32 returns temptable table carrydeptid varchar 32 carrydept varchar 100 investmoney float,product...