Expressions arithmétiques (XQuery)
S’applique à :SQL Server
Tous les opérateurs arithmétiques sont pris en charge, à l’exception de idiv. Les exemples suivants illustrent l'utilisation de base des opérateurs arithmétiques :
DECLARE @x xml
SET @x=''
SELECT @x.query('2 div 2')
SELECT @x.query('2 * 2')
Étant donné que idiv n’est pas pris en charge, une solution consiste à utiliser le constructeur 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)')
Le type issu d'un opérateur arithmétique est basé sur les types des valeurs d'entrée. Si les opérandes sont des types différents, un opérande ou les deux, si nécessaire, sont convertis en un type de base primitif commun en fonction de la hiérarchie de types. Pour plus d’informations sur la hiérarchie de types, consultez Règles de cast de type dans XQuery.
La promotion du type numérique se produit si les deux opérations sont de types de base numériques différents. Par exemple, l’ajout d’un xs:decimal à un xs:double remplacerait d’abord la valeur décimale par un double . L'ajout suivant aboutirait à une valeur double.
Les valeurs atomiques non typées sont converties en type de base numérique de l’autre opérande, ou en xs:double si l’autre opérande n’est pas également typé.
Limites de mise en œuvre
Les limitations suivantes s'appliquent :
Les arguments des opérateurs arithmétiques doivent être de type numérique ou untypedAtomic.
Les opérations sur les valeurs xs:integer entraînent une valeur de type xs:decimal au lieu de xs:integer.