SQL中in传入字符串处理方法

2018-11-05  本文已影响12人  肉肉要次肉

这里说到的in方法,例如:

//整型

select  *  from Students  where ID in ('111', '222', '333');

或者

//字符串

select  *  from Students  where Name in ('张三', '李四', '王五');

在存储过程中,如遇整型参数传入用in接收方式如下:

declare  @sql varchar(1000)

set @sql =  'select  *  from Students  where  1=1 '

set @sql = @sql + ' and ID in ('+ @整型参数+')'

在存储过程中,如遇字符串类型的参数传入用in接收方式如下:

declare  @sql varchar(1000)

declare @strLen int

declare @next int

declare @where varchar(1000)

set @sql =  'select  *  from Students  where  1=1 '

if(@userId<> '')

    begin

         set @strLen= dbo.Get_StrArrayLength(@userId,',')

         set @next=1

         set @where=''

if(@strLen > 0)  begin

   set @sql=@sql+' AND (UserID IN ('

   while @next<=@strLen begin

   set @where=@where+ ','''+dbo.Get_StrArrayStrOfIndex(@userId,',',@next)+''''

   set @next=@next+1

end

if(LEN(@where) > 3)  begin

   set @where= SUBSTRING(@where, 2, LEN(@where))

end

set @sql=@sql + @where +'))'

end

end

注意:以上dbo.Get_StrArrayLength(@userId,',')  和dbo.Get_StrArrayStrOfIndex(@userId,',',@next)是两个函数,分别是获取in中参数遇到逗号则拆分,获取in中参数下标

函数1 函数2
上一篇下一篇

猜你喜欢

热点阅读