在 IN 子句中使用逗号分隔的参数

新手上路,请多包涵

我有 'param1, param2, parma3' 来自 SSRS 到存储过程作为 varchar 参数:我需要在查询中使用它 IN 但需要更改其格式首先像这样:

 select *
from table1
where col1 in('param1', 'param2', 'param3')

在不创建函数和参数表的情况下重新格式化参数的最佳方法是什么?

原文由 Mikhail Sokolov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
2 个回答

试试这个,只需要在@params 字符串的开头和结尾添加逗号。

 Declare @params varchar(100) Set @params = ',param1,param2,param3,'

Select * from t
where CHARINDEX(','+cast(col1 as varchar(8000))+',', @params) > 0

SQL 小提琴

原文由 HaveNoDisplayName 发布,翻译遵循 CC BY-SA 3.0 许可协议

DECLARE @params varchar(max) = '1,2,3,4'

SELECT * FROM table2 WHERE colId IN (SELECT value FROM SPLIT(@params,','))

根据 id 我们可以找到。

原文由 Bapuji Behera 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进