0

我经常发现我执行了以下查询:

SELECT * FROM TABLE WHERE ID IN (1,2,3,4)

是否有一个函数可以连接一个返回带逗号的整数的结果集?

例如

concatenate(SELECT ID FROM TABLE)会回来1,2,3,4

4

2 回答 2

5

这可以解决问题......我认为这在应用程序层中会更有效,但有时(报告)您最终会诉诸这些类型的技巧。

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

于 2013-05-03T13:20:07.520 回答
2

我不会假装确切地知道你对结果做了什么,但如果你要使用这个结果运行动态 SQL(或手动 SQL),那么为什么不直接使用返回这些 ID 的查询作为INorEXISTS的子查询 例如:

SELECT * FROM TABLE1 WHERE ID IN (SELECT ID FROM TABLE2 WHERE ...)
于 2013-05-03T14:13:49.953 回答