Pattern Matching - alle Zahlen aus einem String extrahieren

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

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

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