SQL Server 2005 xmldata解码

时间:2013-06-21 08:02:17

标签: sql-server xml sql-server-2005 decode

我想解码XML数据列。

我的表格(dailyReports)有一列col2,其中包含多个报告

(col1)      (col2)
reportDate  xmldata
20130101    <t><m><s>234</s><ist>istanbul</ist><ino>17060</ino></m></t>    --1 xml rep.
20130102    <t><m><s>235</s><ist>izmir</ist><ino>12345</ino></m></t>...    --3 xml rep
20130103    <t><m><s>220</s><ist>ankara</ist><ino>98765</ino></m></t>...   --7 xml rep.
20130104    <t><m><s>234</s><ist>istanbul</ist><ino>17060</ino></m></t>... --4 xml rep.
20130105    <t><m><s>138</s><ist>edirne</ist><ino>17171</ino></m></t>...   --9 xml rep.
...

我想导出数据; (每个报告应该换一个新的行)

col1      col2  col3   col4
20130101  234   ist    17060 (first day 1 xml rep.)
20130102  235   izmir  12345 (second day 3 xml rep.)
20130102  220   ankara 98765 (second day 3 xml rep.)
20130102  138   edirne 17171 (second day 3 xml rep.)

...
第3天为7行 第四天4行 第五天9行 ..

1 个答案:

答案 0 :(得分:0)

使用节点运算符XQuery:

SELECT
  reportDate,
  T.t.value('(m/s)[1]', 'int'),
  T.t.value('(m/ist)[1]', 'varchar(50)'),
  T.t.value('(m/ino)[1]', 'int')
FROM dailyReports D
CROSS APPLY D.xmldata.nodes('t') T(t)