0

我想解码 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.)

...
第三天 7 行 第四天
4 行 第五天
9 行
..

4

1 回答 1

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)
于 2013-10-01T13:11:34.163 回答