Die Auswertung eines Ausdrucks ergibt einen Wert oder liefert eine Tabelle (Tabellenfunktionen)..
Ausdrücke können vorkommen in:
Spaltenauswahl (SELECT-Ausdruck, SELECT-Anweisung)
Prädikaten von Suchbedingungen (z.B. WHERE-, HAVING-Klausel)
Zuweisungen (INSERT-, MERGE- oder UPDATE-Anweisung)
SQL-Anweisungen, die in Routinen verwendet werden (z.B. CASE-Anweisung)
Ein Ausdruck besteht aus Operanden und eventuell Operatoren. Die Operatoren werden auf die Ergebnisse der Operanden angewendet.
Das Ergebnis der Auswertung ist ein alphanumerischer Wert, ein National-Wert, ein numerischer Wert oder ein Zeitwert.
Eine Tabellenfunktion liefert als Ergebnis eine Tabelle.
Die Reihenfolge der Auswertung der Operanden ist nicht festgelegt. In bestimmten Fällen wird ein Teilausdruck nicht berechnet, wenn er für die Berechnung des Gesamtergebnisses nicht benötigt wird.
Bei Auswertung eines Ausdrucks wird eine darin enthaltene Funktion ausgeführt und durch den berechneten Wert oder die gelieferte Tabelle ersetzt.
Syntaxdiagramm eines Ausdrucks:
ausdruck ::=
{
wert |
[
tabelle .] {
spalte |
{
spalte (
posnr ) |
spalte[ posnr ] } |
{
spalte (
min..max ) |
spalte[ min..max ] }
} |
funktion |
unterabfrage |
un_op ausdruck |
ausdruck bin_op ausdruck |
case_ausdruck |
cast_ausdruck |
(
ausdruck )
}
spalte ::=
einf_name
posnr ::=
vorzeichenlose_ganzzahl
min ::=
vorzeichenlose_ganzzahl
max ::=
vorzeichenlose_ganzzahl
un_op ::= { + | - }
bin_op ::= { * | / | + | = | || }
wert
Alphanumerischer Wert, National-Wert, numerischer Wert oder Zeitwert (siehe Abschnitt „Werte").
tabelle
Name einer Tabelle, die spalte enthält. Statt des Tabellennamens geben Sie den Korrelationsnamen an, wenn für die Tabelle ein Korrelationsname definiert ist.
spalte
Name einer Spalte, aus der die Werte genommen werden.
posnr
Vorzeichenlose Ganzzahl.
Der Wert wird aus dem (posnr-sp min+1)-ten Spaltenelement der multiplen Spalte spalte genommen und kann wie ein einfacher Wert verwendet werden.
Ist spalte keine multiple Spalte, posnr kleiner als sp min oder posnr größer als sp max, erfolgt eine Fehlermeldung.
sp min bzw. sp max ist die kleinste bzw. größte Positionsnummer der multiplen Spalte.
min .. max
Vorzeichenlose Ganzzahlen.
Der Wert ist das Aggregat aus den Spaltenelementen (min-sp min+1) bis ( max- sp min+1) der multiplen Spalte spalte.
Ist spalte keine multiple Spalte, min nicht kleiner als max, min kleiner als sp min oder max größer als sp max, erfolgt eine Fehlermeldung.
sp min bzw. sp max ist die kleinste bzw. größte Positionsnummer der multiplen Spalte.
posnr bzw. min .. max nicht angegeben:
spalte darf keine multiple Spalte sein.
funktion
Funktion (siehe Abschnitt „Funktion").
unterabfrage
Unterabfrage (siehe Abschnitt „Unterabfrage"), die genau einen Wert liefert.
un_op
Einstelliger Operator, der das Vorzeichen setzt. ausdruck muss numerisch sein und darf kein multipler Wert mit Dimension > 1 sein.
+ Der Wert bleibt gleich.
- Der Wert wird negiert.
bin_op
Zweistelliger Operator. Die beiden Operandenausdrücke dürfen keine multiplen Werte mit Dimension > 1 sein.
a * b
Multiplikation von a mit b.
Die Ausdrücke a und b müssen numerisch sein.
Wenn a und b Ganz- oder Festpunktzahlen sind, ist das Ergebnis eine Ganz- oder Festpunktzahl mit der Gesamtstellenzahl g a+g b, höchstens jedoch 31.
Die Nachkommastellenzahl beträgt n a+ n b, höchstens jedoch 31.
g a und g b sind die Gesamtstellenzahlen von a und b.
n a und n b sind die Nachkommastellenzahlen von a und b.
Wenn a oder b Gleitpunktzahlen sind, ist das Ergebnis eine Gleitpunktzahl mit der Gesamtstellenzahl 24 Bit bei REAL bzw. 56 Bit bei DOUBLE PRECISION.
Ist der Betrag des Ergebnisses für den Ergebnisdatentyp zu groß, erfolgt eine Fehlermeldung. Ist die Gesamtstellenzahl zu groß, wird das Ergebnis gerundet.
a / b
Division von a durch b.
Die Ausdrücke a und b müssen numerisch sein.
Wenn a und b Ganz- oder Festpunktzahlen sind, ist das Ergebnis eine Ganz- oder Festpunktzahl mit der Gesamtstellenzahl 31.
Die Nachkommastellenzahl beträgt 31-v a-n b, mindestens jedoch 0.
v a ist die Vorkommastellenzahl von a. n b ist die Nachkommastellenzahl von b.
Wenn a oder b Gleitpunktzahlen sind, ist das Ergebnis eine Gleitpunktzahl mit der Gesamtstellenzahl 24 Bit bei REAL bzw. 56 Bit bei DOUBLE PRECISION.
Ist der Betrag des Ergebnisses für den Ergebnisdatentyp zu groß, oder ist der Wert von b gleich 0, erfolgt eine Fehlermeldung. Ist die Gesamtstellenzahl zu groß, wird das Ergebnis gerundet.
a + b
Addition von a und b.
Die Ausdrücke a und b müssen numerisch sein.
Wenn a und b Ganz- oder Festpunktzahlen sind, ist das Ergebnis eine Ganz- oder Festpunktzahl mit der Gesamtstellenzahl v max+n max+1, höchstens jedoch 31.
Die Nachkommastellenzahl beträgt n max.
v max ist die größere der beiden Vorkommastellenzahlen von a und b.
n max ist die größere der beiden Nachkommastellenzahlen von a und b.
Wenn a oder b Gleitpunktzahlen sind, ist das Ergebnis eine Gleitpunktzahl mit der Gesamtstellenzahl 24 Bit bei REAL bzw. 56 Bit bei DOUBLE PRECISION.
Ist der Betrag des Ergebnisses für den Ergebnisdatentyp zu groß, erfolgt eine Fehlermeldung. Ist die Gesamtstellenzahl zu groß, wird das Ergebnis gerundet.
a - b
Subtraktion b von a.
Die Ausdrücke a und b müssen numerisch sein.
Wenn a und b Ganz- oder Festpunktzahlen sind, ist das Ergebnis eine Ganz- oder Festpunktzahl mit der Gesamtstellenzahl v max+n max+1, höchstens jedoch 31.
Die Nachkommastellenzahl beträgt n max.
v max ist die größere der beiden Vorkommastellenzahlen von a und b.
n max ist die größere der beiden Nachkommastellenzahlen von a und b.
Wenn a oder b Gleitpunktzahlen sind, ist das Ergebnis eine Gleitpunktzahl mit der Gesamtstellenzahl 24 Bit bei REAL bzw. 56 Bit bei DOUBLE PRECISION.
Ist der Betrag des Ergebnisses für den Ergebnisdatentyp zu groß, erfolgt eine Fehlermeldung. Ist die Gesamtstellenzahl zu groß, wird das Ergebnis gerundet.
a || b
Konkatenation von a mit b.
Die Ausdrücke a und b müssen entweder alphanumerische Werte oder NationalWerte ergeben.
Wenn a und b vom Datentyp CHAR sind, ist das Ergebnis vom Datentyp CHAR mit der Länge l a+l b (in Zeichen), und diese Summe darf nicht größer als 256 sein.
Wenn a und b vom Datentyp NCHAR sind, ist das Ergebnis vom Datentyp NCHAR mit der Länge l a+ l b (in Code Units), und diese Summe darf nicht größer als 128 sein.
Wenn a oder b vom Datentyp VARCHAR sind, ist das Ergebnis vom Datentyp VAR-CHAR mit der Länge l a+l b (in Zeichen), höchstens jedoch 32000.
Wenn a oder b vom Datentyp NVARCHAR sind, ist das Ergebnis vom Datentyp NV-ARCHAR mit der Länge l a+ l b (in Code Units), höchstens jedoch 16000.
l a und l b sind die Längen von a und b.
Wenn das Ergebnis vom Typ CHAR länger als 256 Zeichen oder das Ergebnis vom Typ NCHAR länger als 128 Zeichen ist, dann erfolgt eine Fehlermeldung.
Wenn das Ergebnis vom Typ VARCHAR länger als 32000 Zeichen ist, wird die Zeichenkette rechts auf die Länge 32000 gekürzt und wenn das Ergebnis vom Typ NV-ARCHAR länger als 16000 Zeichen ist, wird die Zeichenkette rechts auf die Länge 16000 gekürzt. Wenn Zeichen entfernt werden, die keine Leerzeichen sind, erfolgt eine Fehlermeldung.
case_ausdruck
CASE-Ausdruck (siehe Abschnitt „CASE-Ausdruck").
cast_ausdruck
CAST-Ausdruck (siehe Abschnitt „CAST-Ausdruck").
Prioritäten
Klammerausdrücke haben die höchste Priorität.
Die einstelligen Operatoren haben Vorrang vor den zweistelligen.
Die multiplikativen Operatoren * und / haben höhere Priorität als die additiven Operatoren + und -.
Die multiplikativen Operatoren haben gleiche Priorität.
Die additiven Operatoren haben gleiche Priorität.
Operatoren gleicher Priorität werden von links nach rechts angewendet.
Wenn ausdruck ein einfacher Name einf_name ist, für den es im Gültigkeitsbereich sowohl eine Spalte als auch einen Routinenparameter oder eine lokale Variable mit diesem Namen gibt, dann wird der Routinenparameter bzw. die lokale Variable verwendet.
Empfehlung Die Namen von Routinenparametern und lokale Variablen sollten sich (z.B. durch Vergabe eines Präfixes wiepar_
odervar_
) von Spaltennamen unterscheiden.