ISNULL()関数を使ってSQLでIF文を使わずに条件を分岐する

公開日: : 最終更新日:2013/12/11 SQL Server , , , ,

ISNULLをIF文の代わりに使ってみる

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

方法はWHERE句の条件にISNULL()関数を使用して、条件分岐を行います。

テーブルとデータの準備

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

<<検索用データ>>

条件を分岐させて検索

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

まずは全件検索。

動作結果。

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

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

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

実行結果。

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

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

解説

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

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

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

関連記事

no-img

SQLで月曜日始まりのカレンダー作成

カレンダー作成 SQLServerで月曜日始まりの1週間分のカレンダーを作成します。 実行す

記事を読む

a0001_013635

SQLServerのテーブルやカラムにコメントをつける方法

SQLServerでテーブルやカラムにコメントをつける SQLServerで作成したテーブルやカラ

記事を読む

no-img

SQLServerでホスト名を取得する

SQLServerが動作しているホスト(サーバ)名取得 SQLServerでSQLServerが動

記事を読む

SQLServer

SQLServerでストアドプロシージャ名を取得する

SQLServerでストアドプロシージャ名を取得する ストアドプロシージャ名を取得する エラ

記事を読む

a0001_013635

SQLで改行コードを含む項目を取得する

SQLで改行コードを含む項目を検索する Microsoft SQL Server Managemn

記事を読む

no-img

SQL Server-SQLでテーブル仕様書になるものネタを取ってみる

SQLでテーブル仕様書になるものネタを取ってみます。 これを実行すると [crayo

記事を読む

a0001_013635

SQLで文字列を反転させる

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

記事を読む

no-img

ORDER BYでNULLのカラムを最後に表示

ORDER BYでNULLのカラムを最後に持ってくる SQLで何も考慮せずに「ORDER BY」す

記事を読む

no-img

ALTER TABLEのALTER COLUMNで「列 ‘xxxxx’ に依存しています」とエラーになる

ALTER COLUMNで「列 'xxxxx' に依存しています」とエラー SQLServerでカ

記事を読む

no-img

データベースに登録されている内容を固定長の長さで出力する(2)

登録されている内容を固定長の長さで出力する 先日作成したデータベースに登録されている内容を固定長の

記事を読む

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

SQLでテーブルのカラム名(項目名)を取得 Oracleでは

SQLServer
SQLServerでクライアントのIPアドレスを取得する

SQLServerでクライアントのIPアドレスを取得する SQLを発

no-img
SQLでCASE~WHENを使ってみる(2)

CASE~WHENはSQLでCASE~WHENを使ってみるとは別に

a0001_013635
テーブルから列を削除する「ALTER TABLE テーブル名 DROP COLUMN 削除する列名」

既存のテーブルから指定した列を削除する 既存のテーブルで不要になった

no-img
ISNULLとCOALESCEは動作が異なる

ISNULLとCOALESCEは動作が異なるので注意が必要 とある人

→もっと見る



PAGE TOP ↑