Funktionen

DATE

DATE(<expression-1> [ , <expression-2> ] )

Die Funktion DATE dient zur Umwandeln eines Varchar-Ausdrucks in ein Datumsformat. Der 2. Varchar-Ausdruck gibt das Format an (siehe Java 8 SimpleDateFormat). Dabei wird ein möglicher Zeitanteil ignoriert und nur der Datumsanteil verwendet.

Das Ergebnis hat den Datentyp DATE.

Folgende Formatanweisungen sollten verwendet werden:

Buchstabe Bedeutung Beispiel Ergebnis
y Jahr yyyy; yy 2011; 11
M Monat MM;M 01; 1
d Tag dd;d 04; 4

Ein Beispiel könnte so aussehen. Hat die Spalte d (Typ Zeichenkette) den Wert '2011-11-1', so liefert

SELECT DATE(d, 'YYYY-M-d')
2011-11-01

Hinweise

Es gibt auch die Formatanweisungen Y (Week Year) und D (Day in Year), die man in der Regel nicht verwenden sollte.

Y benutzt die Kalenderwoche, in der ein gegebenes Datum liegt, um damit das Jahr festzulegen. So liegt der 29.12.1997 in der Kalenderwoche 1 des Jahres 1998. Das "Wochenjahr" ergibt für ihn deshalb das Jahr 1998. Das liefert ein verblüffendes, aber korrektes Ergebnis:

SELECT DATE('1998-12-29', 'YYYY-MM-dd')
1997-12-29

D wird für die fortlaufende Nummer eines Tages verwendet. Zusammen mit der Jahreszahl kann man damit z.B. einen Tag mit seiner Nummer im Jahr finden:

SELECT DATE('2021-189', 'yyyy-D')
2021-07-08

Beim Excel-Treiber ist es derzeit bei Datums-Feldern nicht möglich. Die Umrechnung muss nachdem die Daten als Number oder String geladen wurden mit folgender Formel erfolgen: Datum vom 1.1.1900 - 2 + die Datumszahl aus Excel. Beispiel:

DATE '1900-01-01' - 1 - CASE WHEN datum_aus_excel > 58 THEN 1 ELSE 0 END + datum_aus_excel

Der 1.1.1900 entspricht der Datumszahl 1. Bei Excel ist der 29.2.1900 ein Schalttag (um kompatibel mit Lotus 1-2-3 zu sein). Deshalb muss noch ein Tag abgezogen werden, wenn das Datum hinter dem 28.2.1900 liegt.

Beispiel

Bei DATE Funktion wichtig das richtige Format zu benutzen (yyyy ist nicht gleich YYYY). Hier sind nochmal die DateFormats

SELECT DATE('2021-12-24', 'yyyy-MM-dd'), DATE('20211224', 'YYYYMMDD'), DATE('24.12.2021 18:30:10', 'DD.MM.YYYY HH:mm:ss');

Ausgabe

column_1 column_2 column_3
2021-12-24 2020-12-27 2020-12-27

LTRIM

LTRIM(<expression-1> [ , <expression-2> ] )

Löschen von führenden Zeichen im 1. Varchar-Ausdruck.

Der 2. Varchar-Ausdruck ist optional und gibt einen Satz von Zeichen an, die gelöscht werden sollen. Wenn nicht angegeben, dann wird der Satz auf Leerzeichen beschränkt.

Löscht am Anfang des ersten Ausdrucks alle Zeichen, die in diesem Satz sind, bis zum ersten Zeichen außerhalb des Satzes.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT LTRIM('   das bleibt'), LTRIM('!"$% &%$das bleibt', ' !"$%&');

Ausgabe

column_1 column_2
-------- --------
das bleibt das bleibt

RTRIM

RTRIM(<expression-1> [ , <expression-2> ] )

Löschen von endenden Zeichen im 1. Varchar-Ausdruck.

Der 2. Varchar-Ausdruck ist optional und gibt einen Satz von Zeichen an, die gelöscht werden sollen. Wenn nicht angegeben, dann wird der Satz auf Leerzeichen beschränkt.

Löscht am Ende des ersten Ausdrucks alle Zeichen, die in diesem Satz sind, bis zum ersten Zeichen außerhalb des Satzes.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT RTRIM('das bleibt    '), RTRIM('das bleibt!"$% &%$', ' !"$%&');

Ausgabe

column_1 column_2
-------- --------
das bleibt das bleibt

TRIM

TRIM(<expression>)

Löschen von führenden und endenden "Whitespaces" Zeichen im Varchar-Ausdruck.

Die Funtion verwendet die java Funktion trim (siehe Java 8 trim).

Dabei werden alle zeichen im Ascii Code kleiner oder gleich Leerzeichen als Whitespace angesehen.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT TRIM('  das bleibt    '), TRIM(CHR(9) || ' das bleibt  ' || CHR(13) || CHR(10));

Ausgabe

column_1 column_2
-------- --------
das bleibt das bleibt

LOWER

LOWER(<expression>)

Alle Zeichen im Varchar-Ausdruck in Kleinbuchstaben umwandeln.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT LOWER('Aa123'), lower('GeMiScHt');

Ausgabe

column_1 column_2
-------- --------
aa123 gemischt

UPPER

UPPER(<expression>)

Alle Zeichen im Varchar-Ausdruck in Großbuchstaben umwandeln.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT Upper('Aa123'), UPPER('GeMiScHt');

Ausgabe

column_1 column_2
-------- --------
AA123 GEMISCHT

BIGINT

BIGINT(<expression>)

Umwandeln des Varchar-Ausdruck in einen numerischen Wert.

Verwendet java Long.valueOf() und wirf einen Laufzeitfehler, wenn der String nicht dem Nummerformat entspricht.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT 1*'123';

Ausgabe

Implicit Conversion not yet implemented
SELECT 1*BIGINT('123');

Ausgabe

column_1
--------
123
SELECT 1*BIGINT('A123');

Ausgabe

java.lang.NumberFormatException: For input string: "A123"

ASCII

ASCII(<expression>)

Das erste Zeichen im Varchar-Ausdruck in den ASCII-Wert umwandeln.

Das Ergebnis hat den Datentyp BIGINT.

Beispiel

SELECT ASCII('A'), ascii('ABC');

Ausgabe

column_1 column_2
-------- --------
65 65

LENGTH

LENGTH(<expression>)

Die Länge einses Varchar-Ausdrucks ermitteln.

Das Ergebnis hat den Datentyp BIGINT.

Beispiel

SELECT LENGTH('A'), lengTH('ABC');

Ausgabe

column_1 column_2
-------- --------
1 3

CHR

CHR(<expression>)

Umwandeln des numerischen Ausdrucks in das dazugehörige ASCII-Zeichen

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT CHR(65), chr(35);

Ausgabe

column_1 column_2
-------- --------
A #

LPAD

LPAD(<expression-1>, <expression-2> [ , <expression-3> ])

Den 1. Varchar-Ausdruck links mit dem 3. Varchar-Ausdruck auffüllen, bis die Länge des 2. Bigint-Ausdruck erreicht ist.

Der 3. Varchar-Ausdruck ist optional. Wird er nicht angegeben, so wird mit Leerzeichen aufgefüllt.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT LPAD('x', 10), LPAD('x', 10, '1'), LPAD('xy', 10, 'abc'), lPad('xxxxxxxxxx', 10, '1');

Ausgabe

column_1 column_2 column_3 column_4
-------- -------- -------- --------
         x 111111111x abcabcabxy xxxxxxxxxx

Im 3. Beispiel wird erst der 3. Ausdruck so oft eingefügt, wie er komplett reinpasst. Danach werden rechts die Zeichen abgeschnitten, die nicht mehr als Ergänzung reinpassen

RPAD

RPAD(<expression-1>, <expression-2> [ , <expression-3> ])

Den 1. Varchar-Ausdruck rechts mit dem 3. Varchar-Ausdruck auffüllen, bis die Länge des 2. Bigint-Ausdruck erreicht ist.

Der 3. Varchar-Ausdruck ist optional. Wird er nicht angegeben, so wird mit Leerzeichen aufgefüllt.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT RPAD('x', 10), RPAD('x', 10, '1'), RPAD('xy', 10, 'abc'), rPad('xxxxxxxxxx', 10, '1');

Ausgabe

column_1 column_2 column_3 column_4
-------- -------- -------- --------
x          x111111111 xyabcabcab xxxxxxxxxx

Im 3. Beispiel wird erst der 3. Ausdruck so oft eingefügt, wie er komplett reinpasst. Danach werden rechts die Zeichen abgeschnitten, die nicht mehr als Ergänzung reinpassen

SUBSTR

SUBSTR(<expression-1>, <expression-2> [ , <expression-3> ])

Ausgabe von Teilen des 1. Varchar-Ausdrucks.

Der 2. Bigint-Ausdruck gibt die Startposition (beginnend mit 1) und der optionale 3. Bigint-Ausdruck die Länge. Der 3. Bigint-Ausdruck ist optional. Wird er nicht angegeben, dann wird der Rest ab der Startposition genommen. Ist er länger als die verbleibende Länge , dann wird auch der Rest ab der Startposition zurückgegeben.

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT SUBSTR('12345678', 4), substr('12345678', 2, 4), SUBSTR('12345678', 8, 4);

Ausgabe

column_1 column_2 column_3
-------- -------- --------
45678    2345     8
SELECT SUBSTR('12345678', 9);

Ausgabe

[position=1:27] Index out of bounds

INSTR

INSTR(<expression-1>, <expression-2> [ , <expression-3> [ , <expression-4> ] ])

Sucht im 1. Varchar-Ausdrucks den 2. Varchar-Ausdruck.

Wenn der 3. Bigint-Ausdruck angegeben wurde, dann beginnt die Suche ab der entsprechenden Position. Der zusätzliche 4. Bigint-Ausdruck gibt an, das wievielte Auftreten vom 2. Varchar Ausdruck gesucht werden soll.

Ist die Suche nicht erfolgreich, dann wird der Wert 0 zurückgegeben.

Das Ergebnis hat den Datentyp Bigint.

Beispiel

SELECT instr('12341234', '1'), INSTR('12341234', '21'), INSTR('12341234', '1', 6), INSTR('12341234', '1', 1, 2);

Ausgabe

column_1 column_2 column_3 column_4
-------- -------- -------- --------
1        0        0        5

REPLACE

REPLACE(<expression-1>, <expression-2>, <expression-3>)

Im 1. Varchar-Ausdruck Austauschen alle Auftreten vom 2. Varchar-Ausdruck durch den 3. Varchar-Ausdruck.

Die Funtion verwendet die java Funktion replace (siehe Java 8 replace).

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT REPLACE('AAAdas bleibtAAAAA', 'A', 'B'), REPLACE('AAAdas bleibtAAAAA', 'B', ''), REPLACE('AAA', 'A', '');

Ausgabe

column_1 column_2 column_3
-------- -------- --------
BBBdas bleibtBBBBB AAAdas bleibtAAAAA

REGEXP_REPLACE

REGEXP_REPLACE(<expression-1>, <expression-2>, <expression-3>)

Im 1. Varchar-Ausdruck werden alle Treffer des regulären Ausdrucks gegeben im 2. Varchar-Ausdruck durch den 3. Varchar-Ausdruck ausgetauscht.

Die Funtion verwendet die java Funktion replace (siehe Java 8 replaceAll).

Das Ergebnis hat den Datentyp VARCHAR.

Beispiel

SELECT REGEXP_REPLACE('AAAdas bleibtBUHZ', '[A-Z]', 'B'), REGEXP_REPLACE('AAAdas bleibtAAAAA', 'B', ''), REGEXP_REPLACE('AAA', '.', '');

Ausgabe

column_1 column_2 column_3
-------- -------- --------
BBBdas bleibtBBBB AAAdas bleibtAAAAA