Menggunakan regexp_replace lebih sederhana:
# select regexp_replace('test1234test45abc', '[^0-9]+', '', 'g');
regexp_replace
----------------
123445
(1 row)
^
artinya not
, jadi karakter apa pun yang bukan dalam rentang 0-9
akan diganti dengan string kosong, ''
.
'g'
adalah bendera yang berarti semua pertandingan akan diganti, bukan hanya pertandingan pertama.