THILL
19. Februar 2009 um 21:51
1
Hallo,
ich würde gerne aus einem String nur die Zahlen extrahieren.
Bsp: ‘abc1xyz34’ -> ‘134’
Habe es mit Select substring(‘abc1xyz34’ from [0-9]) versucht, dann wird aber nur der erste Treffer, also die ‘1’ zurückgegeben.
Der Versuch Select regexp_matches(‘abc1xyz34’, ‘[0-9]’) führt zu der Meldung ‘No function matches the given name’!?
Danke
fristo
19. Februar 2009 um 23:18
2
THILL:
Hallo,
ich würde gerne aus einem String nur die Zahlen extrahieren.
Bsp: ‘abc1xyz34’ → ‘134’
Habe es mit Select substring(‘abc1xyz34’ from [0-9]) versucht, dann wird aber nur der erste Treffer, also die ‘1’ zurückgegeben.
Der Versuch Select regexp_matches(‘abc1xyz34’, ‘[0-9]’) führt zu der Meldung ‘No function matches the given name’!?
Danke
select translate (‘abc1xyz34’, ‘abcdefghijklmnopqrstuvwxyz’, ‘’);
mfg
fristo
THILL:
Hallo,
ich würde gerne aus einem String nur die Zahlen extrahieren.
Bsp: ‘abc1xyz34’ → ‘134’
Habe es mit Select substring(‘abc1xyz34’ from [0-9]) versucht, dann wird aber nur der erste Treffer, also die ‘1’ zurückgegeben.
Der Versuch Select regexp_matches(‘abc1xyz34’, ‘[0-9]’) führt zu der Meldung ‘No function matches the given name’!?
Danke
Ja, und? Diese Funktion gibt es halt nicht. Dafür regexp_replace. Vermutlich willst Du auch noch das Resultat als Zahl zum Rechnen verwenden?
test=*# select regexp_replace('abc1xyz34','[^0-9]','','g')::int + 10000 as my_int;
my_int
--------
10134
(1 row)
Andreas
Da fehlen Großbuchstaben, Umlaute, Satzzeichen, …
Andreas
THILL
21. Februar 2009 um 12:34
5
Hallo,
Danke - das regexp_replace statement von Andreas ist genau das was ich gesucht hatte. (und regexp_matches gibt es erst ab 8.3 - bin aber noch auf 8.1 - na ja, jetzt wo Lenny released wurde wohl nicht mehr lange)
Gruss