【发布时间】:2016-12-02 03:19:42
【问题描述】:
我对如何在 SQL Server 2008+ 中查询 XML 有基本的了解。基本的。但是我很难从这个简单的 XML 中得到我想要的东西,今天下午我已经在 SO 和整个网络上搜索了很长一段时间,但还没有找到神奇的词来寻求帮助。
鉴于此 XML:
declare @xml xml =
'<?xml version="1.0" encoding="utf-8"?>
<Customers>
<Customer id="12345" name="John Doe" addr1="123 Somewhere Ln" city="Riverside" state="CA">
<Children>Jane</Children>
<Children>John Jr.</Children>
<Children>Susan</Children>
</Customer>
</Customers>
<Customers>
<Customer id="97531" name="Ben Franklin" addr1="456 Anywhere Dr" city="Albuquerque" state="NM">
<Children>Andrew</Children>
<Children>Adam</Children>
</Customer>
</Customers>'
我可以运行此查询并获取 ID 和名称:
select cust.col.value('@id[1]','int') as id,
cust.col.value('@name[1]','varchar(30)') as name
from @xml.nodes('/Customers/Customer') as cust(col)
id name
12345 John Doe
97531 Ben Franklin
但是,接下来我想要的是每个孩子的 id 和 name,但我无法弄清楚需要什么才能得到它。 IOW,我想要这个:
id child
12345 Jane
12345 John Jr.
12345 Susan
97531 Andrew
97531 Adam
请注意,我需要列式数据,而不是 XML。
那么,什么 SELECT 会从那个 xml 中给我这些结果?
谢谢!
【问题讨论】:
标签: sql xml sql-server-2008 tsql