首页 > 学院 > 开发设计 > 正文

sql server 存储过程中输入参数需要用in而失效的问题解决方案

2019-11-08 20:44:16
字体:
来源:转载
供稿:网友

存储过程中使用IN函数,传入多个参数时,会有问题,因为输入参数(1,2,3) 是一个数据,而不是一个集合,导致sql失效

三种解决方案:

1、建立函数分割输入参数里面的“,”

create FUNCTION [dbo].[Split2](    @RowData varchar(max),    @SplitOn varchar(1))  RETURNS @RtnValue table (    Id int identity(1,1),    Data varchar(4000)) AS  BEGIN     Declare @Cnt int    Set @Cnt = 1    While (Charindex(@SplitOn,@RowData)>0)    Begin        Insert Into @RtnValue (data)        Select             Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))        Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))        Set @Cnt = @Cnt + 1    End    Insert Into @RtnValue (data)    Select Data = ltrim(rtrim(@RowData))    ReturnEND2、动态执行sql:

EXEC('insert @TempTable select * from mytable where uid in ('+@ids+')')3、如果要在if语句中的sql用上in,使用charindex代替:
If exists (Select 1 From [table] Where  charindex(','+cast([ABC] as varchar)+',' , ','+@In_ABC+',')>0 )这个问题困扰了很久,现在就整理出来,希望大家可以参考参考


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表