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