ホームページ >データベース >Oracle >Oracleでデコードをpgに変換する方法

Oracleでデコードをpgに変換する方法

下次还敢
下次还敢オリジナル
2024-05-03 00:21:53827ブラウズ

PostgreSQL の Oracle DECODE 関数では、CASE 式または共用体を使用できます。 CASE 式は、条件に基づいて最初に一致した結果を返します。構文は CASE WHEN 条件 THEN 結果 ELSE 結果 END です。ユニオンは、UNION ALL 演算子を使用して複数の SELECT ステートメントを結合し、各条件を満たす結果列を含むテーブルを返します。

Oracleでデコードをpgに変換する方法

PostgreSQL での Oracle DECODE 関数の置き換え

Oracle DECODE 関数は、条件に基づいて返すために使用されます。異なる値を持つ判定関数。 PostgreSQL には DECODE 関数と全く同等のものはありませんが、CASE 式または共用体を使用して同様の機能を実現できます。

CASE式

CASE 式の構文は以下のとおりです。

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

の条件に基づいて判定します。シーケンスを実行し、条件を満たす最初の結果を返します。条件が満たされない場合は、ELSE 結果が返されます。

Join

Join は、複数の SELECT ステートメントを使用して複数のテーブルからデータを取得する手法です。 UNION ALL 演算子を使用して複数の SELECT ステートメントを結合することで、DECODE 関数の機能を実装することもできます。

<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 - 人の名前
  • 性別 - 人の性別

性別に基づいて人の敬称を取得するクエリを作成します。

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>

3 つのクエリはすべて、次のように同じ結果を生成します:

name title
ジョン さん
メアリー さん

以上がOracleでデコードをpgに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。