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.