Condividi tramite


Espressioni aritmetiche (XQuery)

Si applica a: SQL Server

Tutti gli operatori aritmetici sono supportati, ad eccezione di idiv. Negli esempi seguenti viene illustrato l'utilizzo di base degli operatori aritmetici:

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

Poiché idiv non è supportato, una soluzione consiste nell'usare il costruttore 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)')  

Il tipo risultante da un operatore aritmetico dipende dai tipi dei valori di input. Se gli operandi sono di tipo diverso, all'occorrenza verrà eseguito il cast di uno o entrambi gli operandi a un tipo di base primitivo comune, in base alla gerarchia dei tipi. Per informazioni sulla gerarchia dei tipi, vedere Regole di cast dei tipi in XQuery.

È possibile che i tipi numeric vengano promossi se ai due operandi sono associati tipi di base numerici diversi. Ad esempio, l'aggiunta di un xs:decimal a un xs:double modifica prima il valore decimale in un valore double. Viene quindi eseguita l'addizione, il cui risultato sarà un valore double.

I valori atomici non tipizzati vengono distribuiti al tipo di base numerico dell'altro operando oppure a xs:double se l'altro operando non è tipizzato.

Limitazioni di implementazione

Limitazioni:

  • Gli argomenti per gli operatori aritmetici devono essere di tipo numerico o untypedAtomic.

  • Le operazioni sui valori xs:integer generano un valore di tipo xs:decimal anziché xs:integer.