sqlserver列转行 逗号分隔符

在 SQL Server 中,可以使用 STUFF FOR XML PATH 函数将行数据转换为逗号分隔的列数据。

假设你有一个表 mytable ,其中包含以下列: id , name , value1 , value2 , value3 。要将 value1 , value2 , value3 转换为逗号分隔的列数据,可以使用以下查询:

SELECT id, name, 
       STUFF((SELECT ', ' + CAST(value AS VARCHAR(MAX))
              FROM (VALUES (value1), (value2), (value3)) AS v(value)
              WHERE v.value IS NOT NULL
              FOR XML PATH('')), 1, 2, '') AS values
FROM mytable;

这个查询中,使用子查询将 value1, value2, value3 合并为一个列,并将结果转换为 XML 字符串,使用 STUFF 函数将逗号分隔符插入每个值之间,并移除第一个逗号分隔符。

注意:在使用 CAST 函数将值转换为字符串之前,应该确保这些值的数据类型是可转换为字符串的。如果值的数据类型是数字类型,可以使用 CONVERT 函数将其转换为字符串类型。

  •