首頁 > 資料庫 > Oracle > 主體

oracle中d​​ecode怎麼轉換成pg

下次还敢
發布: 2024-05-03 00:21:53
原創
741 人瀏覽過

對於 PostgreSQL 中的 Oracle DECODE 函數,可以使用 CASE 運算式或聯合。 CASE 表達式依條件傳回第一個符合的結果,語法為:CASE WHEN 條件 THEN 結果 ELSE 結果 END。聯合透過 UNION ALL 操作子組合多個 SELECT 語句,傳回一個包含滿足每個條件的結果列的表。

oracle中d​​ecode怎麼轉換成pg

Oracle DECODE 函數在PostgreSQL 中的替換

Oracle DECODE 函數是一個用於根據條件判斷而傳回不同值的函數。在 PostgreSQL 中,沒有與 DECODE 函數完全相對應的函數,但可以使用 CASE 表達式或聯合來實現類似的函數。

CASE 表達式

CASE 表達式的語法如下:

<code>CASE
    WHEN условие1 THEN результат1
    WHEN условие2 THEN результат2
    ...
    ELSE результат ELSE
END</code>
登入後複製

它根據條件依序進行判斷,並傳回與第一個滿足條件的結果。如果沒有任何條件滿足,則傳回 ELSE 結果。

聯合

合併是一種使用多個 SELECT 語句從多個表中檢索資料的技術。它也可以用來實作DECODE 函數的功能,方法是使用UNION ALL 運算子組合多個SELECT 語句:

<code>SELECT CASE WHEN условие1 THEN résultat1 ELSE NULL END AS результат_1
UNION ALL
SELECT CASE WHEN условие2 THEN résultat2 ELSE NULL END AS результат_2
...</code>
登入後複製

上述查詢將傳回一個表,其中每行都包含一個滿足條件的結果列。

範例

假設我們有一個表格people,其中包含以下列:

  • ##name - 人員姓名
  • gender - 人員性別
我們希望建立一個查詢來根據性別取得人員的尊稱:

Oracle DECODE 函數:

<code>SELECT name, DECODE(gender, 'M', 'Mr.', 'Ms.') AS title
FROM people;</code>
登入後複製

PostgreSQL CASE 表達式:

<code>SELECT name, 
    CASE
        WHEN gender = 'M' THEN 'Mr.'
        WHEN gender = 'F' THEN 'Ms.'
        ELSE NULL
    END AS title
FROM people;</code>
登入後複製

PostgreSQL 聯合:

<code>SELECT name, 
    CASE WHEN gender = 'M' THEN 'Mr.' ELSE NULL END AS title
UNION ALL
SELECT name, 
    CASE WHEN gender = 'F' THEN 'Ms.' ELSE NULL END AS title
FROM people;</code>
登入後複製
這三個查詢都會產生相同的結果如下:

name#titleJohnMr.Mary#Ms.

以上是oracle中d​​ecode怎麼轉換成pg的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!