Kir*_*nov 5 xml sql t-sql sql-server
我有 SQL 表:
Create table
(
ID varchar(50) not null,
Action nvarchar(max) null
)
Run Code Online (Sandbox Code Playgroud)
操作列包含 XML 数据。格式:
<?xml version="1.0" encoding="UTF-8"?>
<oo_outbound_order>
<oo_master>
<Code>123</Code>
<Name>Branan</Name>
</oo_master>
</oo_outbound_order>
Run Code Online (Sandbox Code Playgroud)
如何解析此列?结果应该是这样的:
CODE NAME
123 Branan
Run Code Online (Sandbox Code Playgroud)
尝试以下方法:
DECLARE @XMLData XML = '
<oo_outbound_order>
<oo_master>
<Code>123</Code>
<Name>Branan</Name>
</oo_master>
</oo_outbound_order>'
SELECT
[Code] = Node.Data.value('Code', 'INT'),
[Name] = Node.Data.value('Name', 'NVARCHAR(20)')
FROM @XMLData.nodes('/oo_outbound_order/oo_master') Node(Data)
Run Code Online (Sandbox Code Playgroud)
有很多关于使用 TSQL 解析 xml 的教程文章。例如,http://www.sqlserver.info/syntax/parse-xml-with-sql-server/
DECLARE @xml xml
SET @xml =
'<?xml version="1.0" encoding="UTF-8"?>
<oo_outbound_order>
<oo_master>
<Code>123</Code>
<Name>Branan</Name>
</oo_master>
</oo_outbound_order>'
SELECT
n.value('(./Code/text())[1]','int') as CODE
, n.value('(./Name/text())[1]','Varchar(50)') as NAME
FROM @xml.nodes('/oo_outbound_order/oo_master') as a(n)
Run Code Online (Sandbox Code Playgroud)