在存儲(chǔ)過程中使用IN函數(shù),傳入多個(gè)參數(shù)時(shí),會(huì)有問題,因?yàn)檩斎雲(yún)?shù)(1,2,3) 是一個(gè)數(shù)據(jù),而不是一個(gè)集合,導(dǎo)致sql失效
三種解決方案:
1、建立函數(shù)分割輸入?yún)?shù)里面的“,”
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、動(dòng)態(tài)執(zhí)行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 )這個(gè)問題困擾了很久,現(xiàn)在就整理出來,希望大家可以參考參考
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注