Bla*_*ael 2 xml t-sql sql-server-2005
我在SQL Server 2005的数据库中有一个表"Blah",其中包含PK列BlahID和XML列BlahItems.
该表的记录如下......
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
我设法得到的最接近的是每条记录的FUNCTION,其功能与以下内容相同......
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)
Run Code Online (Sandbox Code Playgroud)
BlahID BlahItem ------ -------- 1 Fred 1 Wilma
我的最终目标是创建"扩展"数据的VIEW,然后查看视图.
您可以尝试以下查询:
SELECT BlahID, XmlItems.BlahItem.value('@name', 'nvarchar(100)') AS BlahItem
FROM Blah CROSS APPLY BlahItems.nodes('/root/item') AS XmlItems(BlahItem)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看Alex Homer 撰写的这篇由三部分组成的文章.
| 归档时间: |
|
| 查看次数: |
2357 次 |
| 最近记录: |