Puede usar REGEXP_REPLACE desde Oracle 10:
SELECT REGEXP_REPLACE('+34 (947) 123 456 ext. 2013', '[^0-9]+', '')
FROM DUAL
Este ejemplo devuelve 349471234562013
.
Las sintaxis alternativas incluyen:
-
Clases de caracteres POSIX:
'[^[:digit:]]+'
-
Extensiones influenciadas por Perl (desde Oracle 11):
'\D+'