Oracle函數-DECODE

來源:互聯網
上載者:User

標籤:

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";

 

Oracle函數-DECODE

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.