为什么我的XQuery返回空序列而不是预期的结果5?
问题原因
你使用的是XQuery语法,该语言的算术运算规则明确规定:任意算术运算符的操作数中只要存在空序列(),整个表达式的计算结果就直接返回空序列,这是规范定义的标准行为,不是运行异常。
空序列在XQuery中不等同于0、也不等同于Null,它的语义是「不存在任何值」,因此无法参与常规数值运算,不会被自动转换为0参与计算。
解决方案
如果需要把空序列按照0处理得到预期的5,可以用以下两种常见写法:
方法1:使用sum()函数聚合所有需要相加的值
sum()函数会自动忽略空序列,对所有传入的数值求和:
let $num := 5 let $num1 := () let $add := sum(($num, $num1)) return $add
方法2:显式判断空序列做兜底转换
用empty()函数判断操作数是否为空,手动给空序列兜底为0:
let $num := 5 let $num1 := () let $add := $num + (if (empty($num1)) then 0 else $num1) return $add
内容的提问来源于stack exchange,提问作者Akbar aLI
相关产品推荐
相关产品推荐

