- カテゴリ:
DECODE¶
選択式を各検索式と順番に比較します。検索式が選択式と一致するとすぐに、対応する結果式が返されます。
注釈
SnowflakeのDECODE は、データを異なるエンコードに変換する PostgreSQLの DECODE 関数とは異なります。
構文¶
DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
引数¶
expr
これが「選択式」です。「検索式」はこの選択式と比較され、一致する場合、
DECODE
はその検索式に対応する結果を返します。通常、選択式は列ですが、サブクエリ、リテラル、またはその他の式にすることができます。searchN
検索式は、選択式と比較する値を示します。これらの検索式のいずれかが一致する場合、関数は対応する
result
を返します。複数の検索式が一致する場合、最初の一致の結果のみが返されます。resultN
結果は、検索式の1つが選択式と一致した場合に返される値です。
default
オプションのデフォルトが指定されており、選択式に一致する検索式がない場合、
DECODE
はこのデフォルト値を返します。
使用上の注意¶
CASE とは異なり、選択式の NULL 値は検索式の NULL 値と一致します。
expr
には、UNION
、INTERSECT
、EXCEPT
、MINUS
などの集合演算子を含めることができます。セット演算子を使用する場合は、データ型に互換性があることを確認してください。詳細については、 集合演算子 トピックの 一般的な使用上の注意 をご参照ください。
照合の詳細¶
選択式と検索式の照合仕様はすべて互換性がなければなりません。
関数から返される値は、最高の 優先度 照合で結果の照合仕様を保持します。
例¶
テーブルを作成して行を挿入します。
CREATE TABLE d (column1 INTEGER); INSERT INTO d (column1) VALUES (1), (2), (NULL), (4);
デフォルト値 '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 | +---------+---------------+
デフォルト値なしの例(一致しない値は 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 | +---------+---------------+