算术表达式 (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 的值。