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)
结果:
欢迎指正
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步