sql儲存過程in(多個參數)


一、用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM