DECODE スカラー関数

DECODE 関数は、 引数間で等価比較を行い (NULL 値も等しいと見なします)、結果として戻すべき引数を決定します。

Read syntax diagramSkip visual syntax diagramDECODE(expression1 ,expression2,result-expression ,else-expression )

スキーマは SYSIBM です。

DECODE 関数は、各 expression2expression1と比較します。 expression1expression2 と等しいか、または expression1expression2 の両方が NULL の場合は、その次の result-expresssion の値が返されます。 expression2expression1 に一致しない場合、else-expression の値が返されます。これら以外の場合は、NULL 値が返されます。

DECODE 関数は、NULL 値の処理を除いては、CASE 式と似ています。
  • expression1 の NULL 値は、対応する expression2 の NULL 値と一致します。
  • NULL キーワードが DECODE 関数内で引数として使用される場合、それは適切なデータ・タイプへのキャストでなければなりません。
DECODE 式の結果タイプを決定する規則は、対応する CASE 式に基づいています。

  • 例 1: DECODE 式:
       DECODE (c1, 7, 'a', 6, 'b', 'c')
    これは以下の CASE 式と同じ結果となります。
       CASE c1
         WHEN 7 THEN 'a'
         WHEN 6 THEN 'b'
         ELSE 'c'
       END
  • 例 2: DECODE 式:
       DECODE (c1, var1, 'a', var2, 'b')
    c1、var1、および var2 を NULL 値にできる場合、以下の CASE 式と同じ結果になります。
       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: 次のような照会について考慮します。
       SELECT ID, DECODE(STATUS, 'A', 'Accepted',
                                 'D', 'Denied',
                                 CAST(NULL AS VARCHAR(1)), 'Unknown',
                                 'Other')
       FROM CONTRACTS
    次に示すのは、CASE 式を使用した同じステートメントです。
       SELECT ID,
         CASE
           WHEN STATUS = 'A' THEN 'Accepted'
           WHEN STATUS = 'D' THEN 'Denied'
           WHEN STATUS IS NULL THEN 'Unknown'
           ELSE 'Other'
         END
       FROM CONTRACTS