重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
使用過 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;?