Oracle中如何判断是否为数字函数

在Oracle中没有现成的判断是否为数字函数,下面我们就来介绍一下如何用三种方法来将其实现:

  1. 利用 to_number

  CREATE OR REPLACE FUNCTION is_numeric (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 is_numeric;

  2. 利用 regexp_like

  CREATE OR REPLACE FUNCTION is_numeric (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 is_numeric;

  3. 利用 TRANSLATE

  CREATE OR REPLACE FUNCTION is_numeric (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 is_numeric;

----整理自网上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值