>我有一个应用程序,它采用逗号分隔的字符串,用于多个 ID 以用于 SQL 查询的"IN"子句。
SELECT * FROM TABLE WHERE [TABLENAME].[COLUMNNAME]
IN
((SELECT '''' + REPLACE('PARAM(0, Enter ID/IDS. Separate multiple ids by
comma., String)', char(44), ''',''') + ''''))
我已经测试过 PARAM 会获取输入的字符串,例如"ID1、ID2",但选择/替换没有执行。声明变成,
SELECT * FROM TABLE WHERE [TABLENAME].[COLUMNNAME]
IN
((SELECT '''' + REPLACE('ID1,ID2', char(44), ''',''') + ''''))
我正在努力实现,
SELECT * FROM TABLE WHERE [TABLENAME].[COLUMNNAME]
IN ('ID1', 'ID2')
查询不返回任何结果/错误。我相信相应的记录在我正在使用的数据库中。不知道如何解决这个问题。
你不能这样做。IN
运算符需要一个以逗号分隔的参数列表,但您为其提供的单个参数恰好包含逗号分隔的字符串:
如果您使用的是 SQL Server 版本 2016 或更高版本,则可以使用内置string_split
将分隔字符串转换为表。
SELECT *
FROM TABLE
WHERE [TABLENAME].[COLUMNNAME]
IN STRING_SPLIT(@CommaDelimitedString, ',')
对于旧版本,您可以选择多个用户定义的函数,我个人最喜欢的是Jeff Moden的DelimitSplit8K。有关更多选项,请阅读 Aaron Bertrand 的 Split 字符串 正确的方式 - 或下一个最佳方式。