Frage zur LOCATE Funktion

mar_hon

Benutzer
Beiträge
11
Hallo zusammen,

ich möchte aus einem Freitextfeld ein Datum in unterschiedlichen Formaten suchen (da es an verschiedenen Positionen steht) und "herausschneiden".
Ein Beispiel bei dem das Datum im Format DD.MM.JJJJ ist:
SUBSTR(TEXTFELD,LOCATE(('30.04.2022'),TEXTFELD),10)
das funktioniert so zwar, allerdings muss das Datum 30.04.2022 vorgeben werden. Geht das zufällig irgendwie per Wildcard?
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.532
Schnellschuß mit Typo:

Code:
postgres=# create table mar_hon(t text);
CREATE TABLE
postgres=# insert into mar_hon values ('hir ist nix');
INSERT 0 1
postgres=# insert into mar_hon values ('hier ist 20.06.2022 ein Datum');
INSERT 0 1
postgres=# select * from mar_hon where t ~ '\d\d\.\d\d\.\d\d\d\d';
               t               
-------------------------------
 hier ist 20.06.2022 ein Datum
(1 row)

postgres=#

Das '\d\d\.\d\d\.\d\d\d\d' ist ein einfacher Regex, hier ist das erklärt: 9.7. Pattern Matching
 

mar_hon

Benutzer
Beiträge
11
Schnellschuß mit Typo:

Code:
postgres=# create table mar_hon(t text);
CREATE TABLE
postgres=# insert into mar_hon values ('hir ist nix');
INSERT 0 1
postgres=# insert into mar_hon values ('hier ist 20.06.2022 ein Datum');
INSERT 0 1
postgres=# select * from mar_hon where t ~ '\d\d\.\d\d\.\d\d\d\d';
               t              
-------------------------------
 hier ist 20.06.2022 ein Datum
(1 row)

postgres=#

Das '\d\d\.\d\d\.\d\d\d\d' ist ein einfacher Regex, hier ist das erklärt: 9.7. Pattern Matching
Soweit klar... Kriegt man das auch in die Ausgabe gepresst?

SELECT
KONTONR,
,SUBSTR(TEXTFELD,LOCATE(('30.04.2022'),TEXTFELD),10)
FROM TEXTSPALTE

Wobei das Datum Wildcard sein müsste.
 

akretschmer

Datenbank-Guru
Beiträge
9.532
Du willst nur das Datum ausgeben, ja?

Code:
postgres=# select (regexp_match(t, '\d\d\.\d\d\.\d\d\d\d'))[1] as "gesucht & gefunden" from mar_hon where t ~ '\d\d\.\d\d\.\d\d\d\d';
 gesucht & gefunden 
--------------------
 20.06.2022
(1 row)

postgres=#

Aber ob das DB2 kann? Ich weiß es nicht ...
 
Werbung:
Oben