算术表达式 (XQuery)

除了 idiv 以外,支持所有算术运算符。以下示例将说明算术运算符的基本用法:

DECLARE @x xml
SET @x=''
SELECT @x.query('2 div 2')
SELECT @x.query('2 * 2')

由于不支持 idiv,因此解决方案将使用 xs:integer() 构造函数:

DECLARE @x xml
SET @x=''
-- Following will not work
-- SELECT @x.query('2 idiv 2')
-- Workaround 
SELECT @x.query('xs:integer(2 div 3)')

从算术运算符得到的类型基于输入值的类型。如果操作数为不同类型,则将在需要时根据类型层次结构将一个或两个操作数转换为常用基元基类型。有关类型层次结构的信息,请参阅XQuery 中的类型转换规则

如果两个操作为不同的数字基类型,则将产生数字类型升级。例如,向 xs:double 添加 xs:decimal 会首先将十进制值更改为双精度值。然后,将执行导致双精度值的添加操作。

如果其他操作数也为非类型化的,则将非类型化原子值转换为其他操作数的数字基类型,或转换为 xs:double。

实现限制

限制如下:

  • 算术运算符的参数必须为数字类型或 untypedAtomic。

  • 对 xs:integer 值的操作将导致 xs:decimal 类型的值而不是 xs:integer 类型的值。