Compartir a través de


Expresiones aritméticas (XQuery)

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 idiv no se admite, una solución es utilizar 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 de tipos distintos, uno o los dos, cuando sea necesario, se convertirán a un tipo base primitivo común, según la jerarquía de tipos. Para obtener información acerca de 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, si se suma un xs:decimal a un xs:double, primero se cambiaría el valor decimal a 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 al tipo base numérico del otro operando, o a xs:double si el otro operando tampoco tiene tipo.

Limitaciones de la implementación

Éstas son las limitaciones:

  • Los argumentos para los operadores aritméticos deben ser de tipo numérico o untypedAtomic.
  • Las operaciones con valores xs:integer dan como resultado un valor de tipo xs:decimal en lugar de xs:integer.