StatementSQL-DDLCASEShue Miulaケース表現の結果によって、列の値が割り当てられます。CASEONtablecolWHENcondition THENresult value table.colCASE句の条件判定の対象となるテーブルとカラムの名前です。conditiontable.col の値に対する判定条件です。result valuetable.col が condition のときに table.col の値として、CASE句が返す戻り値です。ELSEが使用された場合の result value は全ての WHEN の condition 判定が偽となった場合に返される値となります。
CASE句はSQL文中であるフィールドの値によって、他の値を返したい場合に、クライアントプログラムやデータベース正規化以外の方法によって問題を解決できる簡単な方法です。また、ELSEを指定することによって、CASE句が表す値は単にデータベースの正規化だけでは実現が困難な問題も解決できます。一般的にCASE句はSELECT句のカラム指定の代わりに記述されます。これはFirebired1.5で導入された新しい機能のひとつであり、Firebirdのそれより前のバージョンでは使用できません。
EXAMPLE テーブルの TEST カラムの整数値によって TEST カラムが特定の文字列を返すようにします。
SELECT
EXAMPLE.THE_NUMBER,
EXAMPLE.THE_NAME,
CASE EXAMPLE.TEST
WHEN 0 THEN 'エラー'
WHEN 1 THEN '通常'
WHEN 2 THEN '拡張'
WHEN 3 THEN '特殊'
ELSE '未定義の値です'
END
FROM EXAMPLE
WHERE EXAMPLE.THE_NUMBER> 999;
BEGIN DECLARE SECTIONCREATE TABLEEND DECLARE SECTION