Använda regexp_replace är enklare:
# select regexp_replace('test1234test45abc', '[^0-9]+', '', 'g');
regexp_replace
----------------
123445
(1 row)
^
betyder not
, så alla tecken som inte är i intervallet 0-9
kommer att ersättas med en tom sträng, ''
.
'g'
är en flagga som betyder att alla matcher kommer att ersättas, inte bara den första matchen.