Oracle 12C R2-新特性-轉換函式的增強

lhrbest發表於2017-02-19

Oracle 12C R2-新特性-轉換函式的增強

型別:原創 分類:Oracle 12c 2017-02-17 09:20 閱讀(28)次 評論(0)

版權宣告:本文為博主原創文章,未經博主允許不得轉載。

Oracle 12C R2-新特性-轉換函式的增強

12.2中對資料型別轉換函式的許多增強,從而更容易處理轉換錯誤。從下面例子中看更清楚,

 建立表

建立一個表,只有一個date型別的欄位,並插入三條資料,其中兩條是不符合date型別。


SQL> CREATE TABLE t1 (

  data VARCHAR2(20)

);  2    3  

Table created.

SQL> INSERT INTO t1 VALUES ('11111')

  2  ;

1 row created.

SQL> INSERT INTO t1 VALUES ('01-JAN-2016');

1 row created.

SQL> INSERT INTO t1 VALUES ('AAAAA');

1 row created.

SQL> COMMIT;

Commit complete.


 使用轉換函式轉換

12.2之前,使用轉換函式會報錯。例如:


SQL> SELECT TO_NUMBER(data)

FROM   t1;  2  

ERROR:

ORA-01722: invalid number


no rows selected


SQL>


12.2中,在一些TO_*的轉換函式中,已經被新增了一個處理錯誤的功能,這就允許如果某條記錄轉換錯誤,那麼就會返回一個預設值。


如:使用TO_NUMBER函式轉換,只有第一條記錄是可以轉換的。其他兩條都是不符合要求的,所以不會轉換成功。那麼就會返回一個定義好的一個預設值(這裡是-1,當然可以改成其他)



SQL> SELECT TO_NUMBER(data DEFAULT -1 ON CONVERSION ERROR)

FROM   t1;  2  

TO_NUMBER(DATADEFAULT-1ONCONVERSIONERROR)

-----------------------------------------

    11111

       -1

       -1


再如:使用TO_DATE轉換,只有第二條記錄滿足條件,其他返回預設值01-JAN-00



SQL> SELECT TO_DATE(data DEFAULT '01-JAN-2000' ON CONVERSION ERROR, 'DD-MON-YYYY' )

FROM   t1;

TO_DATE(D

---------

01-JAN-00

01-JAN-16

01-JAN-00

SQL>


 VALIDATE_CONVERSION函式

VALIDATE_CONVERSION函式用於測試轉換是否成功,從而可以排除在操作期間導致問題的資料。 如果轉換成功,則函式返回值“1”,如果轉換失敗,則返回“0”。

如:還是那個表,檢驗哪些資料符合轉換成NUMBER型別的。




SQL> SELECT data

FROM   t1

 	WHERE  VALIDATE_CONVERSION(data AS NUMBER) = 1;

DATA

--------------------

11111

SQL>


再如:檢驗哪些資料符合轉換成DATE型別的。


SQL> SELECT data

FROM   t1

WHERE  VALIDATE_CONVERSION(data AS DATE, 'DD-MON-YYYY') = 1;

DATA

--------------------

01-JAN-2016

SQL>


更多的函式詳細資訊請檢視官方文件:http://docs.oracle.com/database/122/SQLRF/Functions.htm#SQLRF006

 

標籤:轉換函式
  • About Me

    ...............................................................................................................................

    ● 本文來自於cndba轉載文章(http://www.cndba.cn/Expect-le/article/1758)

    ● 小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

    ● QQ群:230161599     微信群:私聊

    ● 聯絡我請加QQ好友(642808185),註明新增緣由

    ● 版權所有,歡迎分享本文,轉載請保留出處

    ...............................................................................................................................

    拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。


     

    Oracle 12C R2-新特性-轉換函式的增強  DBA筆試面試講解


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2133814/,如需轉載,請註明出處,否則將追究法律責任。

相關文章