首页 >数据库 >mysql教程 >如何使用 SQL Server 将逗号分隔的单元格值转换为单独的行?

如何使用 SQL Server 将逗号分隔的单元格值转换为单独的行?

Linda Hamilton
Linda Hamilton原创
2025-01-03 12:46:44781浏览

How to Convert Comma-Separated Cell Values into Individual Rows Using SQL Server?

使用 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);

解释:

  1. 括号内的内部查询通过包装每个值,从“String”列构造一个 XML 字符串带有 XML 标签 ()。此步骤是启用后续拆分操作所必需的。
  2. CROSS APPLY 运算符将 String.nodes() 函数应用于内部查询中的每一行,从而有效地将“String”列拆分为 XML 中的各个节点
  3. 最后,SELECT 语句检索“id”列以及每个分割节点的值,该值会自动转换为 VARCHAR 数据

参考:

有关此技术和替代解决方案的更多信息,请参阅以下资源:

http:// /www.sqljason.com/2010/05/converting-single-comma-separated-row.html

以上是如何使用 SQL Server 将逗号分隔的单元格值转换为单独的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn