2013-06-21 97 views
0

我想解碼XML數據列。SQL Server 2005 xmldata解碼

我的表(dailyReports)具有包含多個報表

(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. 
... 

我想導出數據的列col2; (每份報告應該去到一個新行)

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線第五天
..

回答

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)