Ниже приведен другой сценарий с функцией REGEX и функцией TO_NUMBER.
REXEX действительный номер сценария:
SELECT 1 FROM DUAL WHERE REGEXP_LIKE('1234', '^\d+(\.\d+)?$', '');
1234
Сценарий неверного номера REXEX:
SELECT 1 FROM DUAL WHERE REGEXP_LIKE('AS1234#$', '^\d+(\.\d+)?$', '');
no data found
SELECT 1 FROM DUAL WHERE REGEXP_LIKE('$', '^\d+(\.\d+)?$', '');
no data found
TO_NUMBER действительный сценарий:
select to_number('123') from dual;
TO_NUMBER неверный сценарий:
select to_number('123d') from dual;
select to_number('.23.') from dual;
select to_number('asdf') from dual;
ORA-01722: invalid number