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