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

Oracle 判断值是否为数字的函数

2016-04-24 23:02 441 查看

Oracle 判断值是否为数字的函数

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) RETURNNUMBER

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

WHENINVALID_NUMBER THEN

NULL;

WHEN OTHERSTHEN

NULL;

END;

END IF;

RETURNISNUM;

END;

试一下:

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

NAME PSW

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

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