Expressões aritméticas (XQuery)

Há suporte para todos os operadores aritméticos, com exceção de idiv. Os exemplos a seguir ilustram o uso básico dos operadores aritméticos:

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

Tendo em vista que não há suporte para idiv, uma solução seria utilizar o construtor 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)')

O tipo resultante de um operador aritmético é baseado nos tipos dos valores de entrada. Se os operandos forem de tipos diferentes, qualquer um dos dois, ou ambos, quando necessário serão convertidos em um tipo de base primitivo comum, de acordo com a hierarquia do tipo. Para obter informações sobre a hierarquia de tipos, consulte Regras de conversão de tipos em XQuery.

Promoção de tipo numérico ocorre se as duas operações forem de tipos de base numéricos diferentes. Por exemplo, adicionando um xs:decimal a um xs:double alteraria primeiro o valor decimal para um duplo. Em seguida, a adição seria executada de forma a resultar em um valor duplo.

Valores atômicos não digitados serão convertidos no outro tipo de base numérica do operando, ou em xs:double se o outro operando também não for digitado.

Limitações de implementação

Estas são as limitações:

  • Os argumentos para os operadores aritméticos devem ser de tipo numérico ou untypedAtomic.

  • Operações em valores xs:integer resultam em um valor do tipo xs:decimal em vez de xs:integer.