Udostępnij przez


Wyrażenia arytmetyczny (XQuery)

Obsługiwane są wszystkie operatory arytmetyczne, z wyjątkiem idiv.Poniższe przykłady ilustrują podstawowe zastosowanie operatory arytmetyczne:

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

Ponieważ idiv jest nieobsługiwana, rozwiązaniem jest użycie xs:integer() Konstruktor:

DECLARE @x xml
SET @x=''
-- Following will not work
-- SELECT @x.query('2 idiv 2')
-- Workaround 
SELECT @x.query('xs:integer(2 div 3)')

Typ powstałe z operator arytmetyczny opiera się na typy wartości wejściowych.Jeśli różne typy jednej lub obu, wymagane będą rzutowane na wspólne pierwotny typ podstawowy zgodnie z hierarchią typu operandów.Aby uzyskać informacje dotyczące typu hierarchii, zobacz Typ rzutowania reguł w XQuery.

Promocja typu liczbowego występuje, jeśli dwie operacje są różnych typów podstawowych numeryczne.Na przykład dodanie xs:decimal do xs:double najpierw zmienić wartość dziesiętną do podwójnego.Następnie dodanie byłyby wykonywane spowodowałoby w podwójnej wartości.

Bez wartości niepodzielny zostały oddane do drugiego operandu liczbowe typu podstawowego, lub xs:double Jeśli jest także bez drugiego operandu.

Ograniczenia wdrażania

Są następujące ograniczenia:

  • Argumenty dla operatorów arytmetycznych musi być typu numerycznego lub untypedAtomic.

  • Operacje na xs:integer wynik wartości w wartości typu xs:decimal zamiast xs:integer.