您的位置:首页 > 数据库 > Oracle

Oracle 中 isnumeric 的三种实现

2016-12-29 13:53 369 查看
1. 利用 to_number


CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)


   RETURN NUMBER


IS


   v_str FLOAT;


BEGIN


   IF str IS NULL


   THEN


      RETURN 0;


   ELSE


      BEGIN


         SELECT TO_NUMBER (str)


           INTO v_str


           FROM DUAL;


      EXCEPTION


         WHEN INVALID_NUMBER


         THEN


            RETURN 0;


      END;




      RETURN 1;


   END IF;


END isnumeric;



2. 利用 regexp_like 


CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)


   RETURN NUMBER


IS


BEGIN


   IF str IS NULL


   THEN


      RETURN 0;


   ELSE


      IF regexp_like (str, '^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)$')


      THEN


         RETURN 1;


      ELSE


         RETURN 0;


      END IF;


   END IF;


END isnumeric;



3. 利用 TRANSLATE


CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)


   RETURN NUMBER


IS


   v_str VARCHAR2 (1000);


BEGIN


   IF str IS NULL


   THEN


      RETURN 0;


   ELSE


      v_str := TRANSLATE (str, '.0123456789', '.');




      IF v_str = '.' OR v_str = '+.' OR v_str = '-.' OR v_str IS NULL


      THEN


         RETURN 1;


      ELSE


         RETURN 0;


      END IF;


   END IF;


END isnumeric; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: