リファレンスガイド> SQL演算子のTDVサポート> 条件演算子> DECODE
 
DECODE
DECODEを使用すると、実行時の取得中にデータ値を変換できます。
構文
DECODE (expression, string1, result1 [, stringN, resultN][, default]) columnNameAlias
備考
DECODE関数はIF-THEN-ELSEステートメントに似ており、正規表現を1つ以上の値と比較でき、式が指定された値と等しい場合、対応する置換値が返されます。
DECODEは、カウントやその他の目的で文字列をデジタル値に解決するために使用できます。
式と任意の文字列は、table.column、正規表現、または等しいかどうかを相互に比較する値にすることができます。
式は単一の値に解決される必要がありますが、文字列は、等式関数でTRUEまたはFALSEに解決される任意の値にすることができます。
比較された引数が等しい場合、文字列に対応する結果の値が返されます。それ以外の場合は、指定されたデフォルト値またはnullが返されます。
式が前の文字列と一致しない場合でも、各文字列は順番に式と比較されます。
デフォルト値が指定されている場合、式がどの文字列とも一致しない場合に返されます。
例(1文字のコードの拡張)
この例では、1文字のコードからより意味のある値へのマッピングを実行します。
SELECT TBL_user.user_id "User ID",
DECODE (TBL_user.gender,
'F', 'Female',
'M', 'Male',
'unspecified') Gender,
TBL_user.first_name "First Name"
FROM /shared/examples/NORTHBAY/"user" TBL_user
 
同様の構文を使用して、1文字のブール値(T/F、1/0など)のペアをTRUEまたはFALSEの値に変換できます。
例(州から地域へのマッピング)
この例では、州から地域へのマッピングを実行します。
SELECT *,
DECODE (customers.StateOrProvince,
'Al', 'East',
'Ak', 'North',
'Ar', 'Midwest',
'Az', 'West',
'Somewhere else') Region
FROM /shared/examples/ds_orders/customers customers
ORDER BY Region
例(他の関数でのDECODEのネスト)
DECODEは、他の関数内にネストできます。これは、特定の値の発生をカウントするのに役立ちます。
この例では、3つの状態のそれぞれのサプライヤーの数は、1または0のいずれかに文字列を導出した後にカウントされます。
SELECT
SUM (DECODE (suppliers.StateOrProvince, 'CA', 1, 0)) California,
SUM (DECODE (suppliers.StateOrProvince, 'NY', 1, 0)) "New York",
SUM (DECODE (suppliers.StateOrProvince, 'PA', 1, 0)) Pennsylvania
FROM /shared/examples/ds_inventory/suppliers