The following function can be used to verify that a string is numeric. It returns 1 if so, and 0 otherwise.
create function is_numeric(str in varchar2) return number is
v_number number(38);
begin
v_number := to_number(str);
return 1;
exception when value_error then
return 0;
end is_numeric;
/
Demonstration
insert into is_numeric_ex values (' 100 ');
insert into is_numeric_ex values ('2e4');
insert into is_numeric_ex values ('-5.89');
insert into is_numeric_ex values ('+28.71');
insert into is_numeric_ex values ('bar');
insert into is_numeric_ex values ('999.99.99');
insert into is_numeric_ex values ('foo');
select * from is_numeric_ex
where is_numeric(col) = 1;
COL
--------
100
2e4
-5.89
+28.71
|