對SQL XML節點進行JOIN查詢

今天遇到的隨堂測驗,考題如下:

SQL Server有一資料表,其中Records欄為XML型別,其中包含多筆記錄,目標要將記錄展開成多筆查詢結果:

.xmljoin-tab td { padding: 3px; }
001 Jeffrey 2014-01-01 9999
001 Jeffrey 2014-04-01 32767
002 Darkthread 2014-06-10 65535

要實現以上需求,關鍵在於兩項SQL功能:

  • SQL XML nodes()
    將XML型別轉成關聯式資料
  • CROSS APPLY
    以結果列的特定欄位當成參數傳給函式得到資料表後與原結果列進行JOIN

二者結合成以下語法

SELECT 
    A.PlayerId, A.PlayerName,
    T.C.value('@Date', 'VARCHAR(10)') RecDate,
    T.C.value('.', 'INT') Score
FROM XMLJOIN A
CROSS APPLY A.Records.nodes('//Rec') T(C)

資料表與XML節點的JOIN查詢就完成囉~

歡迎推文分享:
Published 10 June 2014 10:21 PM 由 Jeffrey
Filed under: ,
Views: 8,907



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<June 2014>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication