メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

DECODE 式

DECODE 式は、等価条件の結果に応じて、特定の値を別の特定の値またはデフォルト値で置換します。この演算は簡易 CASE 式または IF-THEN-ELSE ステートメントの演算と同じです。

構文

Copy
DECODE ( expression, search, result [, search, result ]... [ ,default ] )

この式の型は、レポートに必要である有効なビジネス価値で、テーブルに保存される略名またはコードを置換するために役に立ちます。

Parameters

expression

テーブルの列など、比較する値のソース。

検索

数値または文字列などのソース式に対して比較されるターゲット値。検索式の結果は単一の固定値である必要があります。値の範囲 (age between 20 and 29 など) を検証する式を指定することはできません。置換する値ごとに個別の検索/結果のペアを指定する必要があります。

検索式のすべてのインスタンスのデータ型は、同じまたは互換性がある必要があります。および検索パラメータも互換性のある必要があります。

result

式が検索値を満たす場合、クエリが返す置換値。DECODE 式に少なくとも 1 の検索/結果のペアを含める必要があります。

結果式のすべてのインスタンスのデータ型は同じまたは互換性がある必要があります。結果およびデフォルトパラメータも互換性のある必要があります。

default

検索条件が失敗する場合に、ケースに使用されるオプションのデフォルト値。デフォルト値を指定していない場合、DECODE 式は Null を返します。

使用に関する注意事項

の値および検索の値が両方 Null の場合、DECODE 結果は対応する結果の値です。関数のこの使用方法の説明については、「例」のセクションを参照してください。

このように使用する場合、DECODE は NVL2 式 に似ていますが、いくつかの違いがあります。その違いについては、NVL2 の使用に関する注意事項を参照してください。

2008-06-01 が DATETABLE の START_DATE 列に存在する場合、次の例ではこれが June 1st, 2008 に置換されます。この例では、他のすべての START_DATE 値が NULL に置き換えられます。

Copy
select decode(caldate, '2008-06-01', 'June 1st, 2008') from date where month='JUN' order by caldate; case ---------------- June 1st, 2008 ... (30 rows)

次の例では、DECODE 式を使用して、CATEGORY テーブルの 5 つの省略された CATNAME 列を完全名に変換し、列の他の値を Unknown に変換します。

Copy
select catid, decode(catname, 'NHL', 'National Hockey League', 'MLB', 'Major League Baseball', 'MLS', 'Major League Soccer', 'NFL', 'National Football League', 'NBA', 'National Basketball Association', 'Unknown') from category order by catid; catid | case -------+--------------------------------- 1 | Major League Baseball 2 | National Hockey League 3 | National Football League 4 | National Basketball Association 5 | Major League Soccer 6 | Unknown 7 | Unknown 8 | Unknown 9 | Unknown 10 | Unknown 11 | Unknown (11 rows)

DECODE 式を使用して、VENUESEATS 列が Null のコロラドとネバダの会場を検索して、Null をゼロに変換します。VENUESEATS 列が Null でない場合、結果として 1 を返します。

Copy
select venuename, venuestate, decode(venueseats,null,0,1) from venue where venuestate in('NV','CO') order by 2,3,1; venuename | venuestate | case ------------------------------+----------------+----------- Coors Field | CO | 1 Dick's Sporting Goods Park | CO | 1 Ellie Caulkins Opera House | CO | 1 INVESCO Field | CO | 1 Pepsi Center | CO | 1 Ballys Hotel | NV | 0 Bellagio Hotel | NV | 0 Caesars Palace | NV | 0 Harrahs Hotel | NV | 0 Hilton Hotel | NV | 0 ... (20 rows)