Arithmetische Ausdrücke (XQuery)
Gilt für: SQL Server
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, besteht eine Lösung darin, den xs:integer() -Konstruktor zu verwenden:
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 Grundtyp umgewandelt. Informationen zur Typhierarchie finden Sie unter Type Casting Rules in XQuery.
Die numerische Typhöherstufung erfolgt, wenn zwei Operationen verschiedene numerische Basistypen aufweisen. Beispielsweise würde das Hinzufügen eines xs:decimal-Werts zu einem xs:double zuerst den Dezimalwert in ein Double ändern. Anschließend wird die Addition durchgeführt und das Ergebnis als double-Wert angezeigt.
Untypisierte atomische Werte werden in den numerischen Basistyp des anderen Operanden oder in "xs:double " umgewandelt, wenn der andere Operand ebenfalls nicht eingegeben ist.
Implementierungseinschränkungen
Die folgenden Einschränkungen sind zu beachten:
Argumente für die arithmetischen Operatoren müssen vom numerischen Typ oder untypedAtomic sein.
Vorgänge für xs:integer-Werte führen zu einem Wert vom Typ "xs:decimal " anstelle von "xs:integer".