程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle函數-DECODE,oracle-decode

Oracle函數-DECODE,oracle-decode

編輯:Oracle教程

Oracle函數-DECODE,oracle-decode


DECODE翻譯為解碼或譯碼,因為它可以把查詢結果翻譯成令用戶容易理解的內容。

語法:

expr: 表達式

search:搜索值

result:結果值

default:默認值

DECODE函數的第一個參數是表達式,之後是成對的搜索值-結果值,最後是一個默認值。參數可以是任何數字類型或字符類型。

DECODE函數的作用是把表達式的的值與一些列搜索值比較,當表達式的值與搜索值相等時,返回搜索值對應的結果值,如果沒有找到相等的搜索值,則返回默認值,如果默認值沒有定義,返回NULL。執行邏輯跟CASE語句很相似。

參數類型的處理方式如下:

  • 如果表達式和搜索值是字符數據,Oracle采用nonpadded semantics比較它們。結果值是VARCHAR2類型,並與第一個結果值的字符集相同。
  • 如果第一對搜索值-結果值為數字類型,Oracle會比較所有的搜索值-結果值及表達式,按數字優先級來決定參數類型,並把其它參數的類型轉換為該類型。

搜索值、結果值和默認值可以由表達式(不是指第一個表達式參數)計算。Oracle數據庫使用短路計算的方式,僅在比較每個搜索值與表達式時才結算搜索值,而不是一次計算所有的搜索值。因此Oracle在找到等於表達式的值後,即使後面還有搜索值,也不會去計算它。

Oracle在比較表達式和每個搜索值時,先把它們轉換為第一個搜索值得數據類型。Oracle自動將返回的結果值轉換為第一個結果值的數據類型。如果第一個結果值的數據類型為CHAR或NULL,那麼Oracle會將結果值轉換為VARCHAR2。

在DECODE函數中,Oracle認為兩個NULL值是相等的,如果表達式為NULL,Oracle返回第一個為NULL的搜索值的結果值。

DECODE參數的最大數量為255個。

下面的例子演示了DECODE函數的使用。DECODE將warehouse_id的值翻譯成容易理解的字符串。如果warehouse_id的值是1,函數返回Southlake,如果warehouse_id的值是2,函數返回San Francisco。。。如果warehouse_id的值不是1,2,3,4,則返回Non domestic。

SELECT
product_id, DECODE (warehouse_id, 1, 'Southlake', 2, 'San Francisco', 3, 'New Jersey', 4, 'Seattle', 'Non domestic') "Location" FROM inventories WHERE product_id < 1775 ORDER BY product_id, "Location";

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved