【DB筆試面試458】在Oracle中,如何判斷一個字符串是否全爲數字?

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

         題目         部分

在Oracle中,如何判斷一個字符串是否全爲數字?程序員


     
         答案部分          


能夠有2種辦法來判斷,第一種辦法爲REPLACETRANSLATE函數,在程序中能夠直接使用「TRANSLATE(REPLACE('入參','.',''),'/1234567890','/') IS NULL」來判斷入參爲數字,缺點是,若入參有2個小數點或含有加減號則不能判斷。第二種辦法爲使用TO_NUMBERREGEXP_LIKE來自定義函數進行判斷。
面試

第一種辦法示例:數據庫

SYS@PROD1> SELECT 微信

  2     NVL2(TRANSLATE(REPLACE('12','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE,網絡

  3     NVL2(TRANSLATE(REPLACE('12.34','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE2,app

  4     NVL2(TRANSLATE(REPLACE('12.Mabcd','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE3 ide

  5  FROM DUAL;函數

 

IN_TYP IN_TYP IN_T學習

------ ------ ----spa

NUMBER NUMBER CHAR

第二種辦法示例:

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. 利用 ISNUMERIC

CREATE OR REPLACE FUNCTION ISNUMERIC(STR IN VARCHAR2) RETURN NUMBER IS

BEGIN

  IF STR IS NULL THEN

    RETURN 0;

  ELSE

    IF REGEXP_LIKE(STR, '(^[+-]?\d{0,}\.?\d{0,}$)') 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程序員面試筆試寶典》,做者:李華榮。



watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=      

---------------優質麥課------------

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 詳細內容能夠添加麥老師微信或QQ私聊。


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


About Me:小麥苗      

 本文做者:小麥苗,只專一於數據庫的技術,更注重技術的運用

● 做者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列題目來源於做者的學習筆記,部分整理自網絡,如有侵權或不當之處還請諒解

 版權全部,歡迎分享本文,轉載請保留出處

 QQ:646634621  QQ羣:618766405

 提供OCP、OCM和高可用部分最實用的技能培訓

● 題目解答如有不當之處,還望各位朋友批評指正,共同進步

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

長按下圖識別二維碼或微信掃描下圖二維碼來關注小麥苗的微信公衆號:xiaomaimiaolhr,學習最實用的數據庫技術。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


本文分享自微信公衆號 - DB寶(lhrdba)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索