0
点赞
收藏
分享

微信扫一扫

oracle 判断是不是数值/数字

佃成成成成 2023-11-07 阅读 41

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;



举报

相关推荐

0 条评论