与えられた式を評価し、指定された値を返す汎用 SQL 関数です。
Synopsis
DECODE(expr {,search,result}[,default])
引数
expr 解読される式
search expr が比較される対象値。
result exprsearch と一致する場合に返される値。
default オプションexprsearch と一致しない場合に返される既定値。
概要
searchresult の複数の組み合わせを、コンマで区切って指定できます。default を 1 つ指定できます。DECODE 式のパラメータ (exprsearchresult、および default を含む) の最大数は、およそ 100 です。searchresultdefault の各値は、式から導き出すことができます。
DECODE 式を評価するために、Caché は expr を各 search 値と 1 つずつ比較します。
Caché が各 search 値を評価するのはそれを expr と比較する前だけで、すべての search 値を評価してから expr と比較されるわけではありません。したがって、Caché は、searchexpr と一致した場合は、それ以降の search を評価しません。
DECODE は、最初の result 引数のデータ型を返します。最初の result 引数のデータ型が特定されない場合、DECODE は VARCHAR を返します。
DECODE 式では、Caché は 2 つの NULL を同等とみなします。expr が NULL の場合、Caché は、NULL である最初の searchresult を返します。
DECODE は Oracle との互換性をサポートします。
以下の例は、13 から 19 までの年齢を 'Teen' として “解読” します。default は 'Adult' です。
SELECT Age,Name,DECODE(Age,
       13,'Teen',14,'Teen',15,'Teen',16,'Teen',
       17,'Teen',18,'Teen',19,'Teen',
       'Adult') AS AgeBracket
FROM Sample.Person
ORDER BY Age
以下の例は、Employee レコードの Company コード・フィールドの数値コードを解読し、対応する部署名を返します。従業員の Company コードが 1 から 10 までに該当しない場合、DECODE は既定の “Admin (non-tech)” を返します。
SELECT Name,
DECODE (Company,
   1, 'TECH MARKETING', 2, 'TECH SALES', 3, 'DOCUMENTATION', 
   4, 'BASIC RESEARCH', 5, 'SOFTWARE DEVELOPMENT', 6, 'HARDWARE DEVELOPMENT',
   7, 'QUALITY TESTING', 8, 'FIELD SUPPORT', 9, 'PHONE SUPPORT',
   10, 'TECH TRAINING',
       'Admin (non-tech)') AS TechJobs
FROM Sample.Employee
この式では、expr パラメータが Company で、searchresult パラメータの 10 個の組み合わせが使用されています。"Admin (non-tech)" は default パラメータです。
関連項目
CASE