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を書く量を少なくすることができます。

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

    SQLServerでsp_renameを使ってテーブルの列名を変更する

    SQLServerで列名を変更するには sp_renameを使って列名を変更 SQLServ

    記事を読む

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

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

    記事を読む

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

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

    記事を読む

    指定した列名がどのテーブルで使用されているか検索するSQL

    指定した列名を利用しているテーブルを検索 SQLServerで指定した列名がどのテーブルで使用され

    記事を読む

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

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

    記事を読む

    SQLでCASE~WHENを使ってみる

    SQLでCASE~WHENを使う SQLでCASE~WHENを使うとIF文で分岐して実行文を分ける

    記事を読む

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

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

    記事を読む

    SQLサーバ

    DATETIMEデータ型のミリ秒丸め現象

    DATETIMEデータ型のミリ秒には丸めがあります SQLServerのDATETIMEデータ

    記事を読む

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

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

    記事を読む

    ALTER TABLEでカラムの属性を変更する

    ALTER TABLEでカラムの属性を変更する すでに作成されているテーブルのカラムの属性を変更し

    記事を読む

    ALTER TABLEで既存のテーブルのプライマリーキー(主キー)を変更する

    ALTER TABLEで既存のテーブルのプライマリーキー(主キー)を変

    SQLで当月の第何週目の何曜日か取得する

    SQLで今日は第何週、何曜日か取得する SQLServerでは関数で

    ALTER TABLEでカラムの属性を変更する

    ALTER TABLEでカラムの属性を変更する すでに作成されている

    列は既にデフォルトにバインドされています。

    テーブルのカラムの属性変更でデフォルト値を変更する テーブルのカラム

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

    SQLServerでテーブルやカラムにコメントをつける SQLSer

    →もっと見る



    PAGE TOP ↑