sql 傳入參數為逗號分隔的字符串處理方法


寫了個存儲過程,中間用到了類似這種寫法

Select * From User Where ID In('1,2,3')

其中'1,2,3'是從外面傳進來的參數,就這樣執行報錯:'1,2,3'轉換為int類型出錯,因為ID是int類型的

想了個比較笨的解決方法:思路-循環將傳進來的參數'1,2,3'分割並轉換為int然后存儲到臨時表,之后在In里面Select ID這樣就不報錯了

Declare @ID Nvarchar(500);
Set @ID='4,11064';
Declare @table_UserID Table
(
    ID Int
)
While(CHARINDEX(',',@ID)<>0)
Begin
    Insert Into @table_UserID(ID) Values(CONVERT(Int,Substring(@ID,1,CHARINDEX(',',@ID)-1)));
    Set @ID=STUFF(@ID,1,CHARINDEX(',',@ID),'');
End
Insert Into @table_UserID (ID) Values(CONVERT(Int,@ID));
Select * From @table_UserID 
Select * From User Where ID In(Select ID From @table_User)

結果:

歡迎指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM