首页 >数据库 >mysql教程 >如何在 SQL Server 中将逗号分隔值拆分为行?

如何在 SQL Server 中将逗号分隔值拆分为行?

DDD
DDD原创
2025-01-05 08:24:43166浏览

How Can I Split Comma-Separated Values into Rows in SQL Server?

将逗号分隔的值拆分为行

在 SQL Server 中,将存储在表列中的逗号分隔字符串转换为多行可以可以使用 XML 和字符串操作技术的组合来实现。目标是将包含带有逗号分隔字符串的单行的表转换为包含多行的表,每行包含原始字符串中的唯一值。

要实现此目的,请按照以下步骤操作:

  1. 将字符串转换为 XML 片段: 用 XML 标签包裹以逗号分隔的字符串,将其转换为 XML 片段。此操作为每个值添加开始和结束标记,创建分层 XML 结构。
  2. 使用 CROSS APPLY 拆分 XML 片段:使用 CROSS APPLY 运算符将 XML 片段拆分为单独的 XML 片段。节点。每个节点代表原始字符串中的单个值。
  3. 从节点中提取值:将 VALUE() 方法应用于每个节点,以将实际值提取为字符串。这会将 XML 节点转换回可用的数据类型。
  4. 组合 id 和提取的值: 将提取的值与原始表的 id 列连接以创建新表。这可确保每个值都与原始表中的相应行相关联。

以下示例查询演示了此过程:

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

此查询将产生所需的输出,其中原始表中的每一行都扩展为多行,每行包含来自逗号分隔字符串的单个值。

以上是如何在 SQL Server 中将逗号分隔值拆分为行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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