С Oracle 12. 2 это можно сделать немного проще, используя опцию on conversion error
:
select id, cast(value as number default null on conversion error) as value
from the_table;
При желании вы также можете указать маску формата , аналогично функции to_number()
.
Я предполагаю, что это будет быстрее, чем использование функции PL / SQL, но я не уверен в производительности по сравнению с case
с регулярным выражением. Но это определенно намного короче.