SQL Server xml exists()方法使用多个条件

时间:2017-09-14 07:14:50

标签: sql-server xml xquery

我想在SQL Server xml exist()方法中使用多个条件,但是单个exists()与xmlquery逻辑表达式和多个exists()与t-sql逻辑表达式之间的结果是不同的。我想使用查询1的原因是性能考虑,因为我在xml表中有数百万行。

以下是一个例子:

declare @xmltab table (A xml)
insert into @xmltab 
values ('<A>1</A>'),('<A>1</A><B>1</B>'),('<A>1</A><B>1</B><C>1</C>')

查询1

select A from @xmltab
where A.exist('B or C') = 1

-- return 3 rows

查询2

select A from @xmltab
where A.exist('B') = 1 or A.exist('C') = 1

-- return 2 rows 

1 个答案:

答案 0 :(得分:0)

匹配<A><B>的正确XPath / XQuery表达式(输出应为2行,请参阅下面的链接演示):

select A from @xmltab
where A.exist('*[self::B or self::C]') = 1

<强> rextester demo