Utilisation de regexp_replace c'est plus simple :
# select regexp_replace('test1234test45abc', '[^0-9]+', '', 'g');
regexp_replace
----------------
123445
(1 row)
Le ^
signifie not
, donc tout caractère qui n'est pas dans la plage 0-9
sera remplacé par une chaîne vide, ''
.
Le 'g'
est un drapeau qui signifie que toutes les correspondances seront remplacées, pas seulement la première.