Compartilhar via


Expressões aritméticas (XQuery)

Aplica-se: SQL Server

Todos os operadores aritméticos são suportados, exceto para 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 o idiv não é suportado, 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 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 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, adicionar um xs:decimal a um xs:double primeiro alteraria o valor decimal para um double . Em seguida, a adição seria executada de forma a resultar em um valor duplo.

Os valores atômicos não tipados são convertidos no tipo base numérico do outro 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 do 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.