Oracle 中 isnumeric 的三种实现

1. 利用 to_number

CREATEORREPLACEFUNCTIONisnumeric (strINVARCHAR2)
RETURNNUMBER
IS
   v_str FLOAT;
BEGIN
IFstrISNULL
THEN
RETURN0;
ELSE
BEGIN
SELECT TO_NUMBER (str)
INTO v_str
FROM DUAL;
      EXCEPTION
WHEN INVALID_NUMBER
THEN
RETURN0;
END;
RETURN1;
ENDIF;
ENDisnumeric;

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; 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区