算术表达式 (XQuery)

适用范围:SQL Server

所有算术运算符均受支持,但 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:decimal 添加到 xs:double 会首先将十进制值更改为双精度值。 然后,将执行导致双精度值的添加操作。

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

实现限制

限制如下:

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

  • xs:integer 值的运算会导致类型为 xs:decimal 而不是 xs:integer 的值