CASE WHENを使ってSQLでIF文を使わずに条件を分岐する

公開日: : 最終更新日:2016/07/18 SQL Server , , , ,

SQLでIFを使わずに条件分岐する

SQLでIFを書けばWHERE句の内容を変えて検索できますが、条件ごとに同じようなSQLを
複数回書くのは面倒なので、1行で分岐できないかと言う事でSQLを作って見ました。

方法はWHERE句の条件にCASE WHENを使用して、条件分岐を行います。

1.テーブルとデータの準備

まずはテーブルとその検索用データを以下のSQLで作成します。
<<テーブル>>

<<検索用データ>>


2.条件を分岐させて検索

今回は「社員番号」を指定せずに全件取得する場合と「社員番号」を指定して1件のみに
絞り込んだものを1行のSQLで実行します。

まずは全件検索。

動作結果。

社員番号 氏名 部署
1 太郎さん 営業部
2 次郎さん 経理部
3 三郎さん 人事部
4 四郎さん 営業部
5 五郎さん 経理部
6 六郎さん 人事部
7 七郎さん 営業部
8 八郎さん 経理部
9 九郎さん 人事部

無事全件検索できました。

次に「社員番号」が「5」の人(1件に絞り込み)を取得します。

実行結果。

社員番号 氏名 部署
5 五郎さん 経理部

指定した「五郎さん」だけが取得できました。

3.解説

でCASE WHEを使用することで「条件が指定されてない(@検索社員番号がNULL)」の場合は
テーブルの値をそのまま使用し、「条件が指定された(@検索社員番号がNULL以外)の場合は
その指定された値で検索します。

これでIF文を書くことなく、条件を分岐させることができるようになります。
SQLを書く量を少なくすることができます。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • 13 follow us in feedly

関連記事

Transact-SQLで動的にSQLを編集してカーソルを使用する

2時間もハマったのでメモ書きとして記述します。 Transact-SQLで動的にSQLを編集し

記事を読む

SQLServer

指定した値と同じ場合はNULLを返すNULLIF関数

使いどころがいまいち不明な「NULLIF()」 SQLServerには使いどころがいまいち不明な関

記事を読む

「INNER JOIN」「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」についてまとめ

SQLで良く使うJOINについて SQLでよく使う「INNER JOIN」「LEFT OUTE

記事を読む

ストアドプロシジャ内で例外エラーが発生した行番号を取得する。

例外エラーが発生した行番号を取得する SQLServerのストアドプロシジャ内で例外エラーが発

記事を読む

SQLで文字列を反転させる

SQLで文字列を反転させる SQLで文字列を"012345"を後ろから並び変えて"543210"の

記事を読む

SQLServerでSQLを使ってテーブルのカラム名(項目名)を取得する

SQLでテーブルのカラム名(項目名)を取得 Oracleでは とわりと簡単に取得できるの

記事を読む

SQLを使っていろいろなやり方で年月を抜き出す

いろいろなやり方で年月を抜き出す 数値で年月を管理しているテーブルに対して年月日から 年月を抜き

記事を読む

SQLServer

テーブルに設定されているインデックスをSQLで検索する

テーブルに設定されているインデックスをSQLで検索 SQLServerでテーブルに設定されてい

記事を読む

SQLServer

SQLServerで取得した値を3ケタずつのカンマ区切りの表示に変更する方法です

SQLServerで取得した値を3ケタずつのカンマ区切りの表示に変更する方法です。 3ケタずつ

記事を読む

SQLServerのテーブルロック状態を取得するSQL

SQLServerのデッドロックを調査している中で ロックの状態を調べるSQLがあることが 判明

記事を読む

sp_columns – SQL Serverでカラムの型を取得する

SQL Serverで定義されているテーブルのカラムの型を取得する

2つのテーブルを結合して値を更新するSQL

2つのテーブルを結合して値を更新するSQL テーブルAの値をテーブル

指定された月の日数をSQLで求める

指定された月の日数をSQLで求める SQLServerには該当月

SQLServer
SQLで検索結果を縦横変換する

SQLで検索結果を縦横変換する SQLで取得した各行を一定のくくりで

SQLServer
GROUP BYとHAVINGを使ってデータの重複を探しだすSQL

GROUP BYとHAVINGで重複を探す SQLでGROUP

→もっと見る



PAGE TOP ↑