Anfang des Inhaltsbereichs

Ausdruck (expression) Dokument im Navigationsbaum lokalisieren

Ein Ausdruck (expression) spezifiziert einen Wert, der gegebenenfalls durch Anwendung von arithmetischen Operatoren auf Werte erzeugt wird. Oftmals wird in einer SQL-Anweisung auch eine Liste von Ausdrücken (expression_list) verwendet.

Es werden folgende arithmetische Operatoren unterschieden:

     Additive Operatoren
+ Addition
- Subtraktion

     Multiplikative Operatoren
* Multiplikation
/ Division
DIV ganzzahlige Division
MOD Rest nach ganzzahliger Division

Syntax

<expression>      ::= <term>
                    | <expression> + <term>
                    | <expression> - <term>

<expression_list> ::= (<expression>,...)

<term>            ::= <factor>
                    | <term> * <factor>
                    | <term> / <factor>
                    | <term> DIV <factor>
                    | <term> MOD <factor>

<factor>          ::= [<sign>] <value_spec>
                    
| [<sign>] <column_spec>
                    
| [<sign>] <function_spec>
                    
| [<sign>] <set_function_spec>
                    
| <scalar_subquery>
                    
| <expression>

<sign>            ::= + | -

Beispiele

SQL-Tutorial, StrukturlinkArithmetische Operationen

Erläuterung

Die arithmetischen Operatoren können nur auf numerische Datentypen angewandt werden.

 

Ergebnis eines Ausdrucks

expression

Wert eines beliebigen Datentyps

factor liefert einen NULL-Wert

NULL-Wert

factor liefert einen Spezial-NULL-Wert

Spezial-NULL-Wert

expression führt zu einer Division durch 0

Spezial-NULL-Wert

expression führt zu einem Überlauf des internen Zwischenergebnisses

Spezial-NULL-Wert

Bei fehlender Klammerung haben die Operatoren folgende Priorität:

...

       1.      Das Vorzeichen (+ | -) bindet stärker als die additiven und multiplikativen Operatoren.

       2.      Die multiplikativen Operatoren binden stärker als die additiven Operatoren.

       3.      Die multiplikativen Operatoren haben untereinander gleiche Priorität.

       4.      Die additiven Operatoren haben untereinander gleiche Priorität.

       5.      Bei gleicher Priorität erfolgt die Auswertung von links nach rechts.

Operanden sind Festkommazahlen

Operand1 (a)

Operand2 (b)

Ergebnis

Festkommazahl
(p Genauigkeit
s Anzahl der Nachkommastellen)

Festkommazahl
(p' Genauigkeit
s' Anzahl der Nachkommastellen)

Festkommazahl
(p'' Genauigkeit
s'' Anzahl der Nachkommastellen)
oder Gleitkommazahl

Der Datentyp des Ergebnisses ist abhängig von der Operation sowie von der Genauigkeit und der Anzahl der Nachkommastellen der Operanden.

Beachten Sie, dass bei der Angabe eines Spaltennamens der Datentyp der Spalte zugrunde gelegt wird, nicht die Genauigkeit und die Anzahl der Nachkommastellen des aktuellen Wertes der Spalte.

Operanden sind Festkommazahlen, Operatoren sind +, - , * oder /

Das Ergebnis von Addition, Subtraktion und Multiplikation wird aus einem Zwischenergebnis erzeugt, das mehr als 38 gültige Ziffern haben kann. Wenn das Zwischenergebnis nicht mehr als 38 gültige Ziffern hat, ist das endgültige Ergebnis gleich diesem Zwischenergebnis. Andernfalls wird ein Ergebnis als Gleitkommazahl mit 38 Stellen Genauigkeit erzeugt. Nachkommastellen werden gegebenenfalls abgeschnitten.

Bedingung

Operator

Ergebnis

max(p-s,p'-s')

+, -

Festkommazahl
p''=max(p-s,p'-s')+max(s,s')+1
s''=max(s,s')

(p+p')<=38

*

Festkommazahl
p''=p+p'
s''=s+s'

(p-s+s')<=38

/

Festkommazahl
p''=38
s''=38-(p-s+s')
Spezial-NULL-Wert, wenn b=0

Operanden sind ganze Zahlen, Operatoren sind DIV, MOD

Bedingung

Operator

Ergebnis

ABS(a)<1E38 und
ABS(b)<1E38 und
b<>0

DIV

TRUNC(a/b)

b=0

DIV

Spezial-NULL-Wert

ABS(a)>=1E38 und
b<>0 oder
ABS(b)>=1E38

DIV

Fehlermeldung

ABS(a)<1E38 und
ABS(b)<1E38 und
b<>0

MOD

a-b*(a DIV b)

b=0

MOD

A

ABS(a)>=1E38 und
b<>0 oder
ABS(b)>=1E38

MOD

Fehlermeldung

Ein Operand ist Gleitkommzahl

Wenn einer der Operanden eine Gleitkommazahl ist, so ist das Ergebnis der arithmetischen Operation eine Gleitkommazahl.

Ende des Inhaltsbereichs