Espressioni aritmetiche (XQuery)

Sono supportati tutti gli operatori aritmetici, 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 possibile soluzione consiste nell'utilizzo del 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 del cast dei tipi in XQuery.

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

Nel caso dei valori atomici non tipizzati, viene eseguito il cast al tipo di base numerico dell'altro operando, oppure a xs:double se anche 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 danno come risultato un valore di tipo xs:decimal anziché di tipo xs:integer.