1. 利用 to_number CREATE OR REPLACE FUNCTION isnumeric (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 isnumeric; 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;
oracle如何写是否,Oracle中写function或procedure判断是否是数值
最新推荐文章于 2023-01-10 17:42:46 发布