• 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

  • 相关阅读:
    常见数据集
    opencv_001
    20220201打卡
    20220128打卡
    hadoop基准测试
    deeplab系列
    20220121
    20220119
    hadoop配置LZO压缩
    OpenVINO安装踩坑记录
  • 原文地址:https://www.cnblogs.com/wei325/p/4726457.html
Copyright © 2020-2023  润新知