Sdílet prostřednictvím


Aritmetické výrazy (XQuery)

platí pro:SQL Server

Podporují se všechny aritmetické operátory s výjimkou idiv. Následující příklady ilustrují základní použití aritmetických operátorů:

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

Vzhledem k tomu, že idiv není podporován, je řešením použít konstruktor 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)')  

Výsledný typ z aritmetického operátoru je založen na typech vstupních hodnot. Pokud jsou operandy různé typy, buď jeden nebo oba v případě potřeby, bude přetypován na běžný primitivní základní typ podle hierarchie typů. Informace o hierarchii typů naleznete v tématu Pravidla přetypování typů v XQuery.

Povýšení číselného typu nastane, pokud jsou dvě operace odlišné číselné základní typy. Například přidání xs:decimal do xs:double by nejprve změnilo desetinnou hodnotu na dvojitou . V dalším kroku by se provedlo sčítání, které by vedlo k dvojité hodnotě.

Nezatypované atomické hodnoty se přetypují na číselný základní typ druhého operandu nebo na xs:double, pokud druhý operand není zadán.

Omezení implementace

Toto jsou omezení:

  • Argumenty pro aritmetické operátory musí být číselného typu nebo beztypového.

  • Operace s hodnotami xs:integer výsledkem je hodnota typu xs:decimal místo xs:integer.