ページの先頭行へ戻る
Enterprise Postgres 10 アプリケーション開発ガイド
FUJITSU Software

B.2.2 50個以上の条件式の中から比較結果を求める

Oracleデータベース

SELECT DECODE(col1,
                1,'A',
2,'B',

78,'BZ',
NULL,'UNKNOWN',
'OTHER') FROM t1;

※col1はINTEGER型とします。

FUJITSU Enterprise Postgres

SELECT CASE 
WHEN col1 = 1 THEN 'A'
WHEN col1 = 2 THEN 'B'
...
WHEN col1 = 78 THEN 'BZ'
WHEN col1 IS NULL THEN 'UNKNOWN'
ELSE 'OTHER'
END
FROM t1;

※col1はINTEGER型とします。


機能差異
Oracleデータベース

最大127項目(引数合計が255以内まで)の検索値を指定できます。

FUJITSU Enterprise Postgres

最大49項目(引数合計が100以内まで)の検索値までしか指定できません。

移行手順

以下の手順でCASE式に移行してください。

  1. DECODEの変換対象値式(例の第1引数のcol1)と探索値(例の第2引数の1)を、CASE式の探索条件に指定します。DECODEの結果値(例の第3引数の'A')を、CASE式のTHENに指定します(例のWHEN col1 = 1 THEN 'A')。なお、探索値がNULL値の場合は、CASE式の探索条件を'IS NULL'で指定します。

  2. DECODEの省略値(例の最後の引数の'OTHER')が指定されている場合は、CASE式のELSEに省略値を指定します(例のELSE 'OTHER')。