Jer*_*emy 3 xml t-sql xquery sql-server-2008-r2
在一个表中,我有多行,每行包含基于公共模式的xml.XML的一个示例可能是:
<Items>
<Item>Item 1</Item>
<Item>Item 2</Item>
</Items>
Run Code Online (Sandbox Code Playgroud)
如果我在表中有多行,都包含类似的xml,是否可以Item在单个结果集中编写一个返回节点中所有行的所有值的查询?我们正在使用SQL Server 2008 R2
如果您的xml是在XML列中定义的..
DECLARE @Items AS TABLE
(
ItemXml XML
)
-- test data with a couple rows of xml
INSERT INTO @Items(ItemXml)
VALUES ('<Items><Item>Item 1</Item><Item>Item 2</Item></Items>')
,('<Items><Item>Item 3</Item><Item>Item 4</Item></Items>')
-- the query
SELECT t.i.value('.','VARCHAR(8000)') AS Item
FROM @Items CROSS APPLY ItemXml.nodes('/Items/Item') t(i)
Run Code Online (Sandbox Code Playgroud)
会给你
Item
------
Item 1
Item 2
Item 3
Item 4
Run Code Online (Sandbox Code Playgroud)
这里的关键是nodes()哪个
想要将xml数据类型实例分解为关系数据时非常有用.它允许您识别将映射到新行的节点.