我不确定这是否是您要找的,但要过滤XML方法中的节点,您可以使用括号
[
和
]
例如,选择元素
foo
但仅过滤具有该属性的那些
bar
/foo[@bar]
。如果你想要那些具有该属性的
@bar
使用值5
/foo[@bar=5]
。如果要选择元素
孩子
元素
酒吧
/foo[bar]
.
declare @t table (x xml);
insert into @t (x) values
(N'<foo bar="abc"/>');
insert into @t (x) values
(N'<foo bar="5"/>');
insert into @t (x) values
(N'<foo id="1"><bar id="2"/></foo>');
select * from @t;
select c.value(N'@bar', N'varchar(max)')
from @t cross apply x.nodes(N'/foo[@bar]') t(c)
select c.value(N'@bar', N'varchar(max)')
from @t cross apply x.nodes(N'/foo[@bar=5]') t(c)
select c.value(N'@id', N'int')
from @t cross apply x.nodes(N'/foo[bar]') t(c)
我试图在您的帖子中展示XML片段上的示例,但这些示例太无结构,无法制作有用的示例。