我想在sql server存储过程中提取xml数据。 [英] I want to extract xml data in sql server stored procedure.

查看:76
本文介绍了我想在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆