我想在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
答案 0 :(得分:0)
匹配<A>
或<B>
的正确XPath / XQuery表达式(输出应为2行,请参阅下面的链接演示):
select A from @xmltab
where A.exist('*[self::B or self::C]') = 1
<强> rextester demo
强>