SQL中in传入字符串处理方法
这里说到的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
函数1 函数2注意:以上dbo.Get_StrArrayLength(@userId,',') 和dbo.Get_StrArrayStrOfIndex(@userId,',',@next)是两个函数,分别是获取in中参数遇到逗号则拆分,获取in中参数下标