ホーム > SQL Server, データベース > 第2回 SQL Server Select文で 条件分岐 case文の使用

第2回 SQL Server Select文で 条件分岐 case文の使用

2009 年 3 月 26 日

SQL Server 2008 でCASE文の使用方法

photo by Jane Dallaway

CASE文の意味合いはVBで言うところの、Select文、CだとSwitch文に似ている感じでを受けます。
CASE文はSQL Server Compactでもサポートされ使用できます。

SQL Server Select文で 条件分岐 case文を使用する際、用法は一つだけではなく、

  • 単純CASE 関数 – 1 つの式を一連の単純式と比較して結果を決定します。
  • 検索CASE 関数 – 一連の論理式を評価して結果を決定します。

と、2種類ありますが、これでは、いまいちなんのこっちゃピンときませんよね。

単純CASE 関数

CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
引数

input_expression……A

  • 単純 CASE 形式を使用した場合に評価される式。input_expression は、比較元の値をいれます。

WHEN when_expression

  • 単純 CASE 形式を使用した場合に input_expression と比較される単純式。
    when_expression に比較対象の値をいれます。

THEN result_expression

  • input_expression = when_expression が TRUE になった場合、実行される式を入れます。
    ここでTRUEとなり実行された場合、次のWHEN句、ELSE句に制御は渡りません。制御は抜けてしまいます。
    VBならば、Exitで抜けちゃうって感じでしょうか。

ELSE else_result_expression

  • WHEN句との比較でどれにもあてはまらない時に、実行される部分です 。
    ELSE句を省略し、WHEN句との比較でどれにもあてはまらない場合、CASE は NULL を返します。
単純CASE式の流れ
  • 実行できるのは、等しいかどうかの真偽チェックだけ。(この点から単純CASEと呼ばれています。)
  • WHEN 句の値が、input_expression にに対してTRUEなのかチェック
  • TRUE と評価された場合、該当WHEN句 の THEN句以下の式の値を返します。
  • ELSE句を設定した場合、WHEN句との比較でどれにもあてはまらない時に、ELSE句以下が実行されます。
    ELSE句を省略し、WHEN句との比較でどれにもあてはまらない場合、CASE は NULL を返します。

検索CASE 関数

CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END
引数

WHEN Boolean_expression

  • 検索 CASE 形式で評価するブール式です。

THEN result_expression

  • input_expression = when_expression が TRUE になった場合、実行される式を入れます。
    ここでTRUEとなり実行された場合、次のWHEN句、ELSE句に制御は渡りません。制御は抜けてしまいます。
    VBならば、Exitで抜けちゃうって感じでしょうか。

ELSE else_result_expression

  • WHEN句との比較でどれにもあてはまらない時に、実行される部分です 。
    ELSE句を省略し、WHEN句との比較でどれにもあてはまらない場合、CASE は NULL を返します。
検索CASE式の流れ
  • 各 WHEN 句の Boolean_expression を指定の順序で評価。
  • TRUE と評価された最初の WHEN句 の THEN句以下の式の値を返します。
  • ELSE句を設定した場合、WHEN句との比較でどれにもあてはまらない時に、ELSE句以下が実行されます。
    ELSE句を省略し、WHEN句との比較でどれにもあてはまらない場合、CASE は NULL を返します。

使用用途

CASE式の、構文としては、単純、検索の2種類となります。
使用用途として、下記のものがあげられます。

  • SELECT ステートメントを単純 CASE 式と共に使用する
  • SELECT ステートメントを検索 CASE 式と共に使用する
  • Microsoft Access で使用される IIf 関数を CASE で置き換える
  • ORDER BY 句で CASE を使用する
  • UPDATE ステートメントで CASE を使用する
  • SET ステートメントで CASE を使用する
  • HAVING 句で CASE を使用する

今回のエントリーは、ここまでです。
次回、使用用途について、エントリーしてみたいと思います。

しかし、このCASE文、使用方法に対する概念や感覚を覚えればけっこう、便利そうですね。

関連リンク

MSDN – SQL Server 2008 オンライン ブック CASE (Transact-SQL)

関連するエントリー

    None Found

SQL Server, データベース ,

  1. コメントはまだありません。
  1. トラックバックはまだありません。