使用 SQL Server 将逗号分隔的单元格值转换为单独的行
在处理表中的数据时,有时可能会遇到存储的值作为单个单元格内以逗号分隔的字符串。为了便于分析或进一步处理,可能需要将这些值拆分为单独的行。本文探讨如何使用 SQL Server SELECT 查询来实现此目标。
问题:
考虑一个名为“Sample”的表,其中有一个名为“String”的列,包含逗号分隔值。您需要将数据转换为每个值占据自己一行的格式:
原始表:
Id | String |
---|---|
1 | abc,def,ghi |
2 | jkl,mno,pqr |
所需输出:
Id | processedrows |
---|---|
1 | abc |
1 | def |
1 | ghi |
2 | jkl |
2 | mno |
2 | pqr |
解决方案:
要获得所需的输出,您可以使用以下 SELECT查询:
SELECT A.[id], Split.a.value('.', 'VARCHAR(100)') AS String FROM (SELECT [id], CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String FROM TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a);
解释:
参考:
有关此技术和替代解决方案的更多信息,请参阅以下资源:
http:// /www.sqljason.com/2010/05/converting-single-comma-separated-row.html
以上是如何使用 SQL Server 将逗号分隔的单元格值转换为单独的行?的详细内容。更多信息请关注PHP中文网其他相关文章!