Share via


Expresiones aritméticas (XQuery)

Se aplica a:SQL Server

Se admiten todos los operadores aritméticos, excepto idiv. Los siguientes ejemplos ilustran el uso básico de operadores aritméticos:

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

Dado que no se admite idiv, una solución consiste en usar el constructor 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)')  

El tipo resultante de un operador aritmético se basa en los tipos de los valores de entrada. Si los operandos son tipos diferentes, uno o ambos cuando sea necesario se convertirá en un tipo base primitivo común según la jerarquía de tipos. Para obtener información sobre la jerarquía de tipos, vea Reglas de conversión de tipos en XQuery.

La promoción de tipos numéricos se produce si los dos operandos son de tipos base numéricos distintos. Por ejemplo, al agregar un xs:decimal a un xs:double , primero se cambiaría el valor decimal a un valor double . A continuación, se efectuaría la suma, que daría como resultado un valor double.

Los valores atómicos sin tipo se convierten en el tipo base numérico del otro operando, o en xs:double si el otro operando también no tiene tipo.

Limitaciones de la implementación

Éstas son las limitaciones:

  • Los argumentos de los operadores aritméticos deben ser de tipo numérico o untypedAtomic.

  • Las operaciones en valores xs:integer dan como resultado un valor de tipo xs:decimal en lugar de xs:integer.