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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值