Share via


Expressões aritméticas (XQuery)

Aplica-se a:SQL Server

Todos os operadores aritméticos têm suporte, exceto 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')  

Como não há suporte para idiv, uma solução é usar 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 tipos diferentes, um ou ambos, quando necessário, serão convertidos em um tipo base primitivo comum de acordo com a hierarquia de tipos. Para obter informações sobre a hierarquia de tipos, consulte Regras de conversão de tipos no XQuery.

Promoção de tipo numérico ocorre se as duas operações forem de tipos de base numéricos diferentes. Por exemplo, adicionar um xs:decimal a um xs:double primeiro alteraria 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 tipado são convertidos no tipo base numérico do outro operando ou em xs:double se o outro operando também não for tipado.

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.

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