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

Oracle 判断某個字段的值是不是数字

2015-05-28 11:43 288 查看
壹共有三种方法,分别是使用 to_number()、regexp_like() 和 translate() 三种函数来进行匹配。如果字段的值是数字,返回1,否则返回0,具体的实现如下,三种方法任选壹种即可。运行结果:如果字符串是数字格式则返回1,不是则返回0。

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