Operatoren

Arithmetische Operatoren

Die Ausdrücke und das Ergebniss von arithmetischen Operationen sind jeweils numerische Werte.

Addition

<expression-1> + <expression-2>

Addiert die beiden Ausdücke.

Division

<expression-1> / <expression-2>

Teilt den 1. Ausdruck durch den 2. Ausdruck.

Modulo

<expression-1> % <expression-2>

Ermittelt den Rest bei der Teilung des 1. Ausdruck durch den 2. Ausdruck.

Multiplikation

<expression-1> * <expression-2>

Bildet das Produkt die beiden Ausdücke.

Substraktion

<expression-1> - <expression-2>

Zieht den 2. Ausdruck vom 1. Ausdruck ab.

Vorzeichen -

- <expression>

Ergibt den Ausdruck mit umgekehrtem Vorzeichen.

Vorzeichen +

+ <expression>

Ergibt unverändert den Ausdruck.

Character Operatoren

Die Ausdrücke und das Ergebniss von character Operationen sind jeweils Zeichenketten.

Concat

<expression-1> || <expression-2>

Verbindet die beiden Ausdrücke zu einer Zeichenkette.

Vergleichen von zwei Ausdrücken des gleichen Datentyps

Die Ergebniss von vergleichenden Operationen sind jeweils boolsche Werte.

Die zu vergleichenden Ausdrücke müssen den gleichen Datentyp haben.

Gleich

<expression-1> = <expression-2>
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Wahr wenn beide Ausdrücke nicht NULL und gleich sind
  • Falsch wenn beide Ausdrücke nicht NULL und ungleich sind

Identisch

<expression-1> == <expression-2>
  • Wahr wenn beide Ausdrücke gleich sind (beide nicht null und gleich oder beide NULL)
  • NULL, Wenn nur einer der beiden Ausdrücke NULL ist
  • Falsch sonst (beide ungleich und nicht NULL)
SELECT NULL = NULL, NULL == NULL, 'a' == NULL, 'a' == 'b', 'a' == 'a';

Ausgabe

column_1 column_2 column_3 column_4 column_5
-------- -------- -------- -------- --------
null     true     null     false    true

Ungleich

<expression-1> != <expression-2>
oder
<expression-1> <> <expression-2>
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Wahr wenn beide Ausdrücke nicht NULL und ungleich sind
  • Falsch wenn beide Ausdrücke nicht NULL und gleich sind

Größer

<expression-1> > <expression-2>
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Wahr wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck größer als der 2. ist
  • Falsch wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck kleiner oder gleich als der 2. ist

Größer oder gleich

<expression-1> >= <expression-2>
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Wahr wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck größer oder gleich als der 2. ist
  • Falsch wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck kleiner als der 2. ist

Kleiner

<expression-1> < <expression-2>
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Wahr wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck kleiner als der 2. ist
  • Falsch wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck größer oder gleich als der 2. ist

Kleiner oder gleich

<expression-1> <= <expression-2>
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Wahr wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck kleiner oder gleich als der 2. ist
  • Falsch wenn beide Ausdrücke nicht NULL sind und der erste Ausdruck größer als der 2. ist

Boolsche Operatoren

Die Ausdrücke und das Ergebniss von boolschen Operationen sind jeweils vom Typ Boolean.

Logisches Und

<expression-1> AND <expression-2>

Und für boolsche Ausdrücke

  • Falsch, Wenn einer der beiden Ausdrücke Falsch ist
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Wahr sonst

Logisches Oder

<expression-1> OR <expression-2>

Oder für boolsche Ausdrücke

  • Wahr, Wenn einer der beiden Ausdrücke Wahr ist
  • NULL, Wenn einer der beiden Ausdrücke NULL ist
  • Falsch sonst

Logisches Nicht

NOT <expression>

Nagation eines boolschen Ausdrucks

  • NULL, Wenn einer der Ausdruck NULL ist
  • Falsch, Wenn einer der Ausdruck Wahr ist
  • Wahr sonst

Sonstige Vergleichsoperatoren

Vergleich mit NULL

<expression> IS [ NOT ] NULL

Der Ausdruck kann einen beliebigen Datentyp haben.

NOT ist optional und negiert das Ergebnis

  • Wahr wenn der Ausdruck NULL ist
  • Falsch wenn der Ausdruck nicht NULL ist

Das Ergebnis hat den Datentyp BOOLEAN.

SELECT NULL is NULL, 'a' IS NULL, 'b' is not null;

Ausgabe

column_1 column_2 column_3
-------- -------- --------
true     false    true

Mustervergleich mit "%" und "_"

<expression-1> LIKE <expression-2>

Beide Ausdrücke sind Zeichenketten.

Ergebnis des Vergleiches:

  • Null wenn einer der beiden Operanden NULL ist
  • Wahr wenn der 1. Ausdruck dem 2. Ausdruck entspricht. Es können nur die SQL-Standardplatzhalter "%" und "_" verwendet werden.
  • Falsch sonst.
SELECT 'huhu.xlsx' LIKE '%.xlsx', not 's12' like '_' ;

Ausgabe

column_1 column_2
-------- --------
true     true

Um den Ausdruck zu negieren muss man statt "a not like b" "not a like b" verwenden.

Mustervergleich mit regulären Ausdrücken

<expression-1> REGEXP_LIKE <expression-2>

Beide Ausdrücke sind Zeichenketten.

Ergebnis des Vergleiches:

  • Null wenn einer der beiden Operanden NULL ist
  • Wahr wenn der 1. Ausdruck dem 2. Ausdruck entspricht. Der Vergleich erfolgt über die Java Klasse Pattern.
  • Falsch sonst.
SELECT 'huhu.xlsx' REGEXP_LIKE '.*\.xlsx', '18237636' REGEXP_LIKE '[0-9]*', not 's12' regexp_like '.' ;

Ausgabe

column_1 column_2 column_3
-------- -------- --------
true     true     true

Fallunterscheidungen

CASE
  WHEN <boolean-expression-1> THEN <expression-1>
  ...
  WHEN <boolean-expression-n> THEN <expression-n>
  [ ELSE <expression-else> ]
END

Die Ausdrücke beim THEN und ELSE müssen alle den gleichen Datentypen haben. Diese Datentyp hat auch das Ergebnis.

SELECT CASE WHEN 73*54 = 72 THEN 'Ist 72' WHEN 73*54 = 3942 THEN 'Ist 3942' ELSE 'Keine Ahnung' END, CASE WHEN 1 IS NULL THEN 7 END;

Ausgabe

column_1 column_2
-------- --------
Ist 3942 null