sql - 建立一个逗号分隔的列表?

标签 sql sql-server tsql csv

我正在尝试使用 SQL 构建以逗号分隔的 cat_id 列表

代码是:

declare     @output varchar(max)
set         @output = null;
select @output = COALESCE(@output + ', ', '') + convert(varchar(max),cat_id)

编辑:将 '' 更改为 null,仍然相同。 但我得到的输出是这样的:

, 66 , 23

不应出现前导逗号。我错过了什么?

最佳答案

您使用的是 SQL 2005 吗?使用 Prop Rob Farley谁最近向我展示了这个:

SELECT stuff((
    SELECT ', ' + cast(cat_id as varchar(max))
    FROM categories
    FOR XML PATH('')
    ), 1, 2, '');

内部查询(使用 FOR XML PATH(''))选择以逗号分隔的类别 ID 列表,并以“,”开头。外部查询使用 stuff函数删除前导逗号和空格。

我没有方便的 SQL 实例来测试它,所以它是从内存中获得的。您可能需要调整一些参数等才能使其完全按照您想要的方式工作。

关于sql - 建立一个逗号分隔的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1564980/

相关文章:

java - 我如何将字符串变量插入到java中的Sql语句中

php - 外键防止删除mysql中的数据

sql - 自引用外键约束和删除

sql - 如何在sql中获取上周的最后一天?

SQL Server GROUP BY COUNT 仅连续行

php - mysql计算同一值在多个列中出现的次数

sql - 唯一性由两列的组合确定时的 UPDATE OR INSERT 函数

mysql - 如何发现 RDBMS 中的关系?

sql-server - 为什么我的 Azure SQL 数据库索引仍然碎片?

sql - Web 用户搜索过多数据