SQL Server XML解析问题

时间:2017-04-06 12:49:38

标签: sql-server xml

我需要将XML解析为SQL Server 2012数据库。但是,我找不到任何解析这种XML的好指南(这里是SELECT TOP 2 FROM表):

<ns2:SoftWare xmlns:ns2="http://www.example.com" xmlns:ns3="http://www.example2.com"><keyc>123-ABC</keyc><statusc>Y</statusc></ns2:SoftWare>
<ns2:custom-data xmlns:ns2="http://www.example.com/2"><timec>2016.01.02</timec><customer>8R</customer><keyc>8R</keyc><statusc>N</statusc></ns2:custom-data>

任何帮助,我如何解析XML中的“keyc”值?

所以,我可以使用它选择子句/或将其插入数据库。

1 个答案:

答案 0 :(得分:3)

您可以使用nodesvalue来获取该实体:

DECLARE @Data TABLE (XmlText XML)
INSERT @Data VALUES
    ('<ns2:SoftWare xmlns:ns2="http://www.example.com" xmlns:ns3="http://www.example2.com"><keyc>123-ABC</keyc><statusc>Y</statusc></ns2:SoftWare>'),
    ('<ns2:custom-data xmlns:ns2="http://www.example.com/2"><timec>2016.01.02</timec><customer>8R</customer><keyc>8R</keyc><statusc>N</statusc></ns2:custom-data>')

SELECT
    Nodes.KeyC.value('.', 'VARCHAR(50)') AS KeyC
FROM @Data D
    CROSS APPLY XmlText.nodes('//keyc') AS Nodes(KeyC)

这输出以下内容:

KeyC
-----------
123-ABC
8R