Verwenden von regexp_replace ist einfacher:
# select regexp_replace('test1234test45abc', '[^0-9]+', '', 'g');
regexp_replace
----------------
123445
(1 row)
Der ^
bedeutet not
, also jedes Zeichen, das nicht ist im Bereich 0-9
wird durch eine leere Zeichenfolge ersetzt, ''
.
Das 'g'
ist ein Flag, das bedeutet, dass alle Übereinstimmungen ersetzt werden, nicht nur die erste Übereinstimmung.