说我在SQL xml类型字段中有xml,例如
@x='<root>
<item>
<title></title>
<item>
<title></title>
</item>
</item>
</root>'
我如何在查询中获取第n级项目?
显然要获得你要使用的第一级;
select
t.p.query('.')
from
@x.nodes('/root/item') t(p)
并且为了获得下一个级别,你会添加
cross apply
@x.nodes('/root/item/item')
但是在运行时我们不知道xml可能达到的深度。
任何人都可以指出我正确的方向。
谢谢!
答案 0 :(得分:2)
如果您想要所有项目节点,您可以这样做
select t.p.query('.')
from @x.nodes('//item') t(p)
结果:
(No column name)
<item><title /><item><title /></item></item>
<item><title /></item>
如果你只想要最里面的项目节点,你可以这样做
select
t.p.query('.')
from @x.nodes('//item[count(item) = 0]') t(p)
结果:
(No column name)
<item><title /></item>