カテゴリ:

条件式関数

DECODE

選択式を各検索式と順番に比較します。検索式が選択式と一致するとすぐに、対応する結果式が返されます。

注釈

SnowflakeのDECODE は、データを異なるエンコードに変換する PostgreSQLの DECODE 関数とは異なります。

構文

DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
Copy

引数

expr

これが「選択式」です。「検索式」はこの選択式と比較され、一致する場合、 DECODE はその検索式に対応する結果を返します。通常、選択式は列ですが、サブクエリ、リテラル、またはその他の式にすることができます。

searchN

検索式は、選択式と比較する値を示します。これらの検索式のいずれかが一致する場合、関数は対応する result を返します。複数の検索式が一致する場合、最初の一致の結果のみが返されます。

resultN

結果は、検索式の1つが選択式と一致した場合に返される値です。

default

オプションのデフォルトが指定されており、選択式に一致する検索式がない場合、 DECODE はこのデフォルト値を返します。

使用上の注意

  • CASE とは異なり、選択式の NULL 値は検索式の NULL 値と一致します。

  • expr には、 UNIONINTERSECTEXCEPTMINUS などの集合演算子を含めることができます。セット演算子を使用する場合は、データ型に互換性があることを確認してください。詳細については、 集合演算子 トピックの 一般的な使用上の注意 をご参照ください。

照合の詳細

  • 選択式と検索式の照合仕様はすべて互換性がなければなりません。

  • 関数から返される値は、最高の 優先度 照合で結果の照合仕様を保持します。

テーブルを作成して行を挿入します。

CREATE TABLE d (column1 INTEGER);
INSERT INTO d (column1) VALUES 
    (1),
    (2),
    (NULL),
    (4);
Copy

デフォルト値 'other' の例( NULL は NULLと等しい):

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-', 
                       'other'
                      ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | other         |
+---------+---------------+
Copy

デフォルト値なしの例(一致しない値は NULL を返す):

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-'
                       ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | NULL          |
+---------+---------------+
Copy