`
king_tt
  • 浏览: 2125700 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle 中 isnumeric 的三种实现

 
阅读更多
1. 利用 to_number
CREATEORREPLACEFUNCTIONisnumeric(strINVARCHAR2)
RETURNNUMBER
IS
v_str
FLOAT;
BEGIN
IFstrISNULL
THEN
RETURN0;
ELSE
BEGIN
SELECTTO_NUMBER(str)
INTOv_str
FROMDUAL;
EXCEPTION
WHENINVALID_NUMBER
THEN
RETURN0;
END;

RETURN1;
ENDIF;
ENDisnumeric;

2. 利用 regexp_like
CREATEORREPLACEFUNCTIONisnumeric(strINVARCHAR2)
RETURNNUMBER
IS
BEGIN
IFstrISNULL
THEN
RETURN0;
ELSE
IFregexp_like(str,'^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)$')
THEN
RETURN1;
ELSE
RETURN0;
ENDIF;
ENDIF;
ENDisnumeric;

3. 利用 TRANSLATE
CREATEORREPLACEFUNCTIONisnumeric(strINVARCHAR2)
RETURNNUMBER
IS
v_str
VARCHAR2(1000);
BEGIN
IFstrISNULL
THEN
RETURN0;
ELSE
v_str:
=TRANSLATE(str,'.0123456789','.');

IFv_str='.'ORv_str='+.'ORv_str='-.'ORv_strISNULL
THEN
RETURN1;
ELSE
RETURN0;
ENDIF;
ENDIF;
ENDisnumeric;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics