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.