Partager via


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 de types différents, l'un d'eux, voire les deux si nécessaire, est converti dans un type de base primitif courant en fonction de la hiérarchie des 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 remplace 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 est également non 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.