2008-11-05 52 views
2

我有一個表「嗒嗒」帶PK列BlahID和數據庫SQL Server上的XML列BlahItems 2005如何將XML列加入到它所源自的記錄中?

這個表有記錄如下...

 
BlahID BlahItems 
------ ------------------------------------------------------ 
1  <root><item name="Fred" /><item name="Wilma" /></root> 
2  <root><item name="Lisa" /><item name="Bart" /></root> 

我怎樣才能查詢該表產生以下....

 
BlahID BlahItem 
------ -------- 
1  Fred 
1  Wilma 
2  Lisa 
2  Bart 

我已經成功地得到最接近的是在每個記錄函數,它沿着以下線的東西...

CREATE FUNCTION dbo.Blahs(@id int) 
RETURNS @list TABLE (BlahID int, BlahItem nvarchar(max)) 
BEGIN 
    DECLARE @xml AS xml 
    SELECT @xml = BlahItems FROM dbo.Blah AS b WHERE b.BlahID = @id 

    INSERT INTO @list 
    SELECT @id, tbl.col.value('@name','nvarchar(max)') 
    FROM @xml.nodes('/root/item') tbl(col) 
    RETURN 
END 

SELECT * FROM dbo.Blahs(1) 
 
BlahID BlahItem 
------ -------- 
1  Fred 
1  Wilma 

我的最終目標是創造了「擴展」數據的視圖,然後查詢對視圖。

回答

5

你可以試試這個查詢:

SELECT BlahID, XmlItems.BlahItem.value('@name', 'nvarchar(100)') AS BlahItem 
FROM Blah CROSS APPLY BlahItems.nodes('/root/item') AS XmlItems(BlahItem) 

欲瞭解更多信息亞歷克斯·荷馬檢查this three-part article

+0

真棒謝謝你。它像一個魅力。 – BlackMael 2008-11-05 22:38:39

相關問題