在SQL Server中使用逗号连接整数?

时间:2013-05-03 13:16:36

标签: sql sql-server tsql

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

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

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

例如

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

2 个答案:

答案 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是INEXISTS的子查询?例如:

SELECT * FROM TABLE1 WHERE ID IN (SELECT ID FROM TABLE2 WHERE ...)