DECODE スカラー関数
DECODE 関数は、 引数間で等価比較を行い (NULL 値も等しいと見なします)、結果として戻すべき引数を決定します。
スキーマは SYSIBM です。
DECODE 関数は、各 expression2 を expression1と比較します。 expression1 が expression2 と等しいか、または expression1 と expression2 の両方が NULL の場合は、その次の result-expresssion の値が返されます。 expression2 が expression1 に一致しない場合、else-expression の値が返されます。これら以外の場合は、NULL 値が返されます。
DECODE 関数は、NULL 値の処理を除いては、CASE 式と似ています。
- expression1 の NULL 値は、対応する expression2 の NULL 値と一致します。
- NULL キーワードが DECODE 関数内で引数として使用される場合、それは適切なデータ・タイプへのキャストでなければなりません。
例
- 例 1: DECODE 式:
これは以下の CASE 式と同じ結果となります。DECODE (c1, 7, 'a', 6, 'b', 'c')
CASE c1 WHEN 7 THEN 'a' WHEN 6 THEN 'b' ELSE 'c' END
- 例 2: DECODE 式:
c1、var1、および var2 を NULL 値にできる場合、以下の CASE 式と同じ結果になります。DECODE (c1, var1, 'a', var2, 'b')
CASE WHEN c1 = var1 OR (c1 IS NULL AND var1 IS NULL) THEN 'a' WHEN c1 = var2 OR (c1 IS NULL AND var2 IS NULL) THEN 'b' ELSE NULL END
- 例 3: 次のような照会について考慮します。
次に示すのは、CASE 式を使用した同じステートメントです。SELECT ID, DECODE(STATUS, 'A', 'Accepted', 'D', 'Denied', CAST(NULL AS VARCHAR(1)), 'Unknown', 'Other') FROM CONTRACTS
SELECT ID, CASE WHEN STATUS = 'A' THEN 'Accepted' WHEN STATUS = 'D' THEN 'Denied' WHEN STATUS IS NULL THEN 'Unknown' ELSE 'Other' END FROM CONTRACTS