首页 >数据库 >mysql教程 >如何从 SQL 中以逗号分隔的列值中提取行?

如何从 SQL 中以逗号分隔的列值中提取行?

Susan Sarandon
Susan Sarandon原创
2025-01-03 03:39:39698浏览

How to Extract Rows from Comma-Separated Column Values in SQL?

从逗号分隔的列值中提取行

问题:

给定一个包含逗号分隔列的表值,目标是将每个值转换为单独的值rows.

查询:

SELECT A.[id],  
     Split.a.value('.', 'VARCHAR(100)') AS processedrows  
FROM  (SELECT [id],  
         CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String  
     FROM  Sample) AS A CROSS APPLY String.nodes ('/M') AS Split(a);

解释:

  1. 内部查询创建一个名为的新列将原始逗号分隔值包装在 XML 标记内的字符串。这是通过使用 CAST 和 REPLACE 函数将值转换为格式良好的 XML 字符串来完成的。
  2. 外部查询执行交叉应用,以使用节点函数将 XML 字符串解析为节点。每个节点代表一个逗号分隔的值。
  3. a.value('.','VARCHAR(100)') 表达式将 a 节点的值提取为 VARCHAR(100) 数据类型。这为我们提供了单独处理的行。

参考:

  • [使用 SQL 将单个逗号分隔的行值转换为多行XML](http://www.sqljason.com/2010/05/converting-single-comma-separated-row.html)

以上是如何从 SQL 中以逗号分隔的列值中提取行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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