Freigeben über


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 es sich bei den Operanden um unterschiedliche Typen handelt, werden entweder einer oder beide bei Bedarf in einen gemeinsamen primitiven Basistyp gemäß der Typhierarchie umgewandelt. Informationen zur Typhierarchie finden Sie unter Type Casting Rules in XQuery.

Die numerische Typhöherstufung erfolgt, wenn zwei Operationen verschiedene numerische Basistypen aufweisen. Wenn Sie z. B. eine xs:decimal-Datei zu einer xs:double hinzufügen, wird zuerst der Dezimalwert in einen double 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 oder in xs:double umgewandelt, wenn der andere Operand ebenfalls nicht typisiert 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.