Udostępnij za pośrednictwem


Wyrażenia arytmetyczne (XQuery)

Dotyczy:programu SQL Server

Obsługiwane są wszystkie operatory arytmetyczne, z wyjątkiem idiv. W poniższych przykładach przedstawiono podstawowe zastosowanie operatorów arytmetycznych:

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

Ponieważ idiv nie jest obsługiwana, rozwiązaniem jest użycie konstruktora 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)')  

Wynikowy typ z operatora arytmetycznego jest oparty na typach wartości wejściowych. Jeśli operandy są różnymi typami, jeden lub oba, jeśli jest to wymagane, zostanie rzutowane do typowego typu podstawowego pierwotnego zgodnie z hierarchią typów. Aby uzyskać informacje o hierarchii typów, zobacz Type Casting Rules in XQuery.

Podwyższanie typu liczbowego występuje, jeśli dwie operacje są różnymi typami podstawowymi liczbowymi. Na przykład dodanie xs:decimal do xs:double najpierw spowoduje zmianę wartości dziesiętnej na dwukrotną . Następnie należy wykonać dodanie, które spowodowałoby dwukrotną wartość.

Nietypowe wartości niepodzielne są rzutowane na typ podstawowy innego operandu lub do xs:double, jeśli inny operand jest również nietypowy.

Ograniczenia implementacji

Są to ograniczenia:

  • Argumenty dla operatorów arytmetycznych muszą być typu liczbowego lub nietypowe.

  • Operacje na wartościach xs:integer powodują, że wartość typu xs:dziesiętna zamiast xs:integer.