首页 > 解决方案 > SQL Server 查询解释 - 逗号分隔值到单独的行

问题描述

我找到了如何从一行中获取值的好方法,这些值用逗号分隔成单独的行:

SELECT 
    q2.value  
FROM 
    (SELECT 
         CAST('<x>' + REPLACE(Data, ',', '</x><x>') + '</x>' AS XML) AS thexml   
     FROM
         MyTable) q1  
CROSS APPLY  
    (SELECT 
         x.value('.', 'VARCHAR(100)') AS value 
     FROM 
         thexml.nodes('x') AS f(x)) q2

但是有一些令人困惑的部分,希望有人可以解释一下:

(SELECT 
     x.value('.', 'VARCHAR(100)') AS value 
 FROM 
     thexml.nodes('x') AS f(x)) q2

标签: sql-servertsqlsplit

解决方案


再会,

您提到的查询部分(SELECT x.value('.','varchar(100)') as value FROM thexml.nodes('x') as f(x)) q2基于 xml 数据类型方法。

这部分x.value('.','varchar(100)')查询基于 XML 数据类型的方法 value()(您可以在此处阅读更多内容),并使用 XQuery 表达式来检索 XML 实例中的数据。

这部分thexml.nodes('x')使用了xml的值,并在内部使用方法nodes()进行解析。您可以在此文档中阅读更多内容


推荐阅读