像高级编程语言一样,XQuery同样有逻辑表达式,逻辑表达式要么是or表达式要么是and表达式。在不抛错的前提下,逻辑表达式的运算结果要么是true要么是false。
and和or都是二元操作,在执行时,首先会得出两个操作数的有效布尔值。关于有效布尔值,在前面已经提过了。下面两张表分别说明and和or运算时的情况。EBV1指第一个操作数的有效布尔值,EBV2指第二个操作数的有效布尔值,
AND:
EBV2 = true
EBV2 = false
error in EBV2
EBV1 = true
true
false
error
EBV1 = false
false
false
either false or error
error in EBV1
error
either false or error
error
OR:
EBV2 = true
EBV2 = false
error in EBV2
EBV1 = true
true
true
either true or error
EBV1 = false
true
false
error
error in EBV1
either true or error
error
error
另外,需要提出的是XQuery还提供了not函数。如果函数参数的有效布尔值是true,则函数返回false。如果函数的有效布尔值是false,则函数返回true。如果在计算参数的有效布尔值是抛错,则函数抛错。
10 eq 1 and 2 eq 2 ---> 结果为false
1 eq 1 or 2 eq 3 ---> 结果为true