SQL Server XML解析问题
问题描述:
我需要将XML解析到SQL Server 2012数据库中。但是,我找不到任何很好的指导来分析这种XML(这里是SELECT TOP 2 FROM表):SQL Server XML解析问题
<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”的价值?
所以,我可以使用它选择子句/或插入到数据库。
答
您可以使用nodes
和value
获得该实体:
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