拿到一个字符串,需要判断下是否纯数字组成
方法1
:
这个方法是之前一个oracle群里的同学给写的。直接套用过来了
这个方法是使用exception
create function F_IF_NUMBER(p_str in varchar2)
return number
as
e_error exception;
pragma exception_init(e_error, -06502);
begin
return to_number(p_str);
exception
when e_error then
return null;
end;j
方法2
:
这个方法是使用translate函数进行替换
create
or
replace
function
is_number(str
varchar2
)
return
number
is
v_str
varchar2
(
2000
);
begin
v_str :=
replace
(
translate
(str,
'0123456789'
,
'0000000000'
),
'0'
,
''
);
if
v_str
is
null
then
return
0
;
else
return
1
;
end
if
;
end
;
方法3
:
这个方法,利用正则表达式即可
create
or
replace
function
is_number(str
varchar2
)
return
number
is
begin
if
regexp_like(str,
'^[0-9]+$'
)
then
return
0
;
else
return
1
;
end
if
;
end
;
方法4:
这里不是一个方法,其实也是在用exception
declare
v_sql varchar2(100) := '&shuru';
not_char exception;
PRAGMA EXCEPTION_INIT(not_char, -01722);
ha number;
begin
select to_number(v_sql) into ha from dual;
dbms_output.put_line(ha);
exception
when not_char then
dbms_output.put_line('输入非纯数字');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生其它错误');
end;