向sqlserver数据库中传递类似数组的参数解决办法

向sqlserver数据库中传递类似数组的参数解决办法
关于sqlserver数据库存储过程传递varchar类型参数(后端给出参数格式 ‘1,2,3’)。但是查询始终没有结果,但是直接写在语句中确实可以的,例如:select * from tablename where id in(‘1’,’2’,’3’)可以查到结果。但在存储过程使用中需要传递参数
declare @id varchar(100);
set @id=’1’+’,’+’2’+’,’+’3’;
select * from tablename where id in (@id),却查不到结果。试着各种拼接sql都不行,后来找了很久才在网上找到一个解决方法,建一个函数 如下:

create   function   [dbo].[f_split](@c   varchar(2000),@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 * from tablename where id in(select col from f_split(@id,’,’))
留着以备不时之需。

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页