Нет строковых констант, но вы можете сделать:
select translate
( mystring
, '0'||translate (mystring, 'x0123456789', 'x')
, '0'
)
from mytable;
Например:
select translate
( mystring
, '0'||translate (mystring, 'x0123456789', 'x')
, '0'
)
from
( select 'fdkhsd1237ehjsdf7623A@L:P' as mystring from dual);
TRANSLAT
--------
12377623
Если вы хотите делать это часто, вы можете обернуть это как функцию:
create function only_digits (mystring varchar2) return varchar2
is
begin
return
translate
( mystring
, '0'||translate (mystring, 'x0123456789', 'x')
, '0'
);
end;
/
Тогда:
SQL> select only_digits ('fdkhsd1237ehjsdf7623A@L:P') from dual;
ONLY_DIGITS('FDKHSD1237EHJSDF7623A@L:P')
-----------------------------------------------------------------
12377623