我经常发现我执行了以下查询:
SELECT * FROM TABLE WHERE ID IN (1,2,3,4)
是否有一个函数可以连接一个返回带逗号的整数的结果集?
例如
concatenate(SELECT ID FROM TABLE)
会回来1,2,3,4
我经常发现我执行了以下查询:
SELECT * FROM TABLE WHERE ID IN (1,2,3,4)
是否有一个函数可以连接一个返回带逗号的整数的结果集?
例如
concatenate(SELECT ID FROM TABLE)
会回来1,2,3,4
这可以解决问题......我认为这在应用程序层中会更有效,但有时(报告)您最终会诉诸这些类型的技巧。
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + cast(ID as varchar(10))
FROM table
SELECT @listStr
我从 Pinal Dave 那里学到了这个技巧,请参阅:Create a Comma Delimited List Using SELECT Clause From Table Column
我不会假装确切地知道你对结果做了什么,但如果你要使用这个结果运行动态 SQL(或手动 SQL),那么为什么不直接使用返回这些 ID 的查询作为IN
orEXISTS
的子查询 例如:
SELECT * FROM TABLE1 WHERE ID IN (SELECT ID FROM TABLE2 WHERE ...)