您好,登錄后才能下訂單哦!
使用過 asp 的應該對 isnumeric 函數不會陌生,這是一個常用的判斷入參是否為數字的函數。在 oracle 中沒有現成的判斷是否為數字函數,下面就用三種方法來實現:
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;?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。