我想在sql server存储过程中提取xml数据。 [英] I want to extract xml data in sql server stored procedure.
本文介绍了我想在sql server存储过程中提取xml数据。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Hi,
I have a table structure like:
[int] [varchar] [xml]
ID Name xmlData
1 ABC <row><d1>10</d1><d2>25</d2></row>
2 XYZ <row><d1>12</d1><d2>11</d2><d3>15</d3></row>
and want the output as :
ID Name xmlCol Value
1 ABC D1 10
1 ABC D2 25
2 XYZ D1 12
2 XYZ D2 11
2 XYZ D3 15
推荐答案
如果你正在使用 SQL Server 2008 或更高版本,你可以这样做:
Hi,
If you're using SQL Server 2008 or above, you can do it in this way:
CREATE TABLE #TempTable
(ID INT,
Name VARCHAR(50),
xmlData XML);
INSERT INTO #TempTable (ID, Name, xmlData)
VALUES (1, 'ABC', '<row><d1>10</d1><d2>25</d2></row>'),
(2, 'XYZ', '<row><d1>12</d1><d2>11</d2><d3>15</d3></row>');
;WITH Data
AS (SELECT ID,
Name,
xmlCol = C.value('local-name(.)', 'VARCHAR(50)'),
[Value] = C.value('./.', 'INT')
FROM #TempTable
CROSS APPLY xmlData.nodes('/row/*') AS T(C))
SELECT ID, Name, xmlCol, [Value]
FROM Data;
DROP TABLE #TempTable;
所以我在这里使用 CTE
, CROSS APPLY
和 XQuery
解析XML并将数据转换为所需的输出。
结果:
So here I'm using CTE
, CROSS APPLY
and XQuery
to parse XML and transform the data into desired output.
Result:
ID Name xmlCol Value
1 ABC d1 10
1 ABC d2 25
2 XYZ d1 12
2 XYZ d2 11
2 XYZ d3 15
这篇关于我想在sql server存储过程中提取xml数据。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文