在 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
函数将其转换为字符串类型。