我经常发现我执行以下查询:
SELECT * FROM TABLE WHERE ID IN (1,2,3,4)
是否有一个函数可以连接一个以逗号返回整数的结果集?
例如
concatenate(SELECT ID FROM TABLE)
会返回1,2,3,4
答案 0 :(得分: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
答案 1 :(得分:1)
我不会假装确切地知道你正在对结果做什么,但是如果你要用这个结果运行动态SQL(或手动SQL),那么为什么不只是使用返回这些结果的查询ID是IN
或EXISTS
的子查询?例如:
SELECT * FROM TABLE1 WHERE ID IN (SELECT ID FROM TABLE2 WHERE ...)