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

自定义函数 判断oracle指定字段的值是否是数值类型

2013-08-20 09:29 183 查看
http://hi.baidu.com/yljf1314/item/59c27962e3f9262669105b89

Oracle PL/SQL并没有提供一个判断值是否为数字的函数,所以我们在实际中遇到以下的问题时,

常常会很郁闷。

例如有一个表,

SQL> desc userlogin

名称 是否为空? 类型

----------------------------------------- -------- ----------------------

NAME VARCHAR2(20)

PSW VARCHAR2(20)

SQL> select * from userlogin;

NAME PSW

-------------------- --------------------

张三 123456

李四 abcdefg

钱五 abc123

想把psw为纯数字的记录找出来,就很麻烦。

为了解决这个问题,我们先建一个函数,

CREATE OR REPLACE FUNCTION ISNUMBER(MyStr VARCHAR2) RETURN NUMBER

IS

STR VARCHAR2(400);

ISNUM NUMBER;

NUM NUMBER;

BEGIN

--返回0,不是数字。1,是数字

ISNUM:=0;

STR:=TRIM(MyStr);

--如果输入值为空,就返回不是数字。

IF TRIM(STR) IS NOT NULL THEN

BEGIN

NUM:=TO_NUMBER(STR);

ISNUM:=1;

EXCEPTION

WHEN INVALID_NUMBER THEN

NULL;

WHEN OTHERS THEN

NULL;

END;

END IF;

RETURN ISNUM;

END;

例如1::(查询指定字段是数值类型数据的信息)

SQL> select * from userlogin where isnumber(psw)=1;

NAME PSW

-------------------- --------------------

张三 123456

例如2::(查询指定字段不是数值类型数据的信息)

SQL> select * from userlogin where isnumber(psw)=0;

NAME PSW

-------------------- --------------------

李武 1233c2f

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