Arithmetische Ausdrücke (XQuery)

Alle arithmetischen Operatoren werden unterstützt, mit Ausnahme von idiv. Die folgenden Beispiele veranschaulichen die Grundlagen der Verwendung von arithmetischen Operatoren:

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

Da idiv nicht unterstützt wird, kann als Alternative der xs:integer()-Konstruktor verwendet werden:

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

Der aus einem arithmetischen Operator resultierende Datentyp ist vom Datentyp des Eingabewerts abhängig. Wenn die Operanden unterschiedliche Typen aufweisen, wird entweder einer oder gegebenenfalls werden beide Typen entsprechend der Typhierarchie zu einem gemeinsamen primitiven Basisdatentyp umgewandelt. Weitere Informationen zur Typhierarchie finden Sie unter Typumwandlungsregeln in XQuery.

Die numerische Typhöherstufung erfolgt, wenn zwei Operationen verschiedene numerische Basistypen aufweisen. Wenn beispielsweise xs:decimal und xs:double addiert werden, wird zunächst der decimal-Wert in einen double-Wert geändert. Anschließend wird die Addition durchgeführt und das Ergebnis als double-Wert angezeigt.

Nicht typisierte atomare Werte werden in den numerischen Basistyp des anderen Operanden umgewandelt oder in xs:double, wenn der andere Operand ebenfalls nicht typisiert ist.

Implementierungseinschränkungen

Die folgenden Einschränkungen sind zu beachten:

  • Argumente arithmetischer Operatoren müssen vom Typ Numerisch oder untypedAtomic sein.

  • Operationen mit xs:integer-Werten ergeben einen Wert vom Typ xs:decimal anstelle von xs:integer.