スライドショー

実戦的にSQL文を条件分岐させる3つの方法!

みなさんこんにちは!フリーランスプログラマーのsatoです。

SQLを組んでいく中で

条件分岐したいなぁ
なんて時があると思います。今回はそんな条件分岐についてです。実践でよく発生する3パターンの状況ごとの分岐方法をまとめておきました。ぜひ参考にしてみてください。

方法①基礎中の基礎!CASE式を使用する!

CASE式を使えば、非常に簡単に分岐処理を書くことができます。基本的に以下のように、条件式を書いて分岐を行います。

SELECT
  CASE
      WHEN [条件1] THEN [条件1を満たしたら表示する内容]
      ELSE [条件を満たしていなかったら表示する内容]
  END
FROM [テーブル名];

「例えば点数ごとで表示を変更する」なんて処理を書くのならば以下のようになるでしょう。

SELECT
  name,point,
  CASE
      WHEN 80 <= point THEN "合格"
      ELSE "不合格"
  END
FROM user;

簡単ですね!詳細は以下の記事にまとめていますので、ぜひ参考にしてみてください。

【SQL】5分でわかるCASE式!SELECTもUPDATEも自在に条件分岐させよう
更新日 : 2019年4月6日

方法②NULLチェックだけならばIFNULL

分岐を行いたい理由として、よく発生するのがNULLだったらで分岐したい状況ではないでしょうか。その状況ではCASE式を使うまでもありません。IFNULLを使用すれば、簡単に実現できます。使い方は以下の通りです。

SELECT IFNULL([チェックする要素], [NULLだったときに表示する文字列]) FROM [テーブル名];

より具体的に見てみましょう。userテーブルの、名前がNULLのユーザーのみ「NoName」と表示したかったとしましょう。その場合は以下の通りです。

SELECT IFNULL(name, "NoName") FROM user;

方法③外部情報による分岐ならシェルスクリプトで!

例えば…

現在のサーバー変数などによって処理を分岐させたい
出力した結果の取得方法も分岐したい

などなど…さらに特殊なことをやる場合はどうすれば良いのでしょうか?その場合は、シェルスクリプトなどを組んで進めてしまうのが手っ取り早いでしょう。例えばMySQLでの書き方ならば、以下のような記述方法で分岐することができるでしょう。

以下は非常に簡単に、rootユーザーで、blog_testDBを適当にSELECTしてきている例です。

#!/bin/sh
NUM1=100
NUM2=200

if [ $NUM1 -lt $NUM2 ]; then
mysql -u root blog_test -e "select * from user;"
else
mysql -u root blog_test -e "select * from user limit 1;"
fi

今回やっていることは変数二つのどちらが大きいかで分岐しているだけの処理ですが…うまく使えば、様々な分岐のさせ方ができますね!SQLはオプションで、そのままコマンドを投げることが可能なので、各自環境のやり方を調べておきましょう。

またシェルスクリプトの基本的な文法がわからない人は、以下で学んでみてください。

【Linux入門】shellとは?作り方から実行方法までを解説!
更新日 : 2019年10月14日

まとめ

今回は非常に簡単にですが、SQL上でのIF文のような分岐処理のやり方を見てきました。

  • 方法①基礎中の基礎!CASE式を使用する!
  • 方法②NULLチェックだけならばIFNULL
  • 方法③外部情報による分岐ならシェルスクリプトで!
  • 特に最後のシェルスクリプトでの対応方法は、実践での緊急時に、お世話になることも多いでしょう。より高みを目指す方は、一つの技術としてぜひともマスターしておきましょう。

    LINEで送る
    Pocket

    ITエンジニアへ転職したい方におすすめ

    自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
    エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

    しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

    こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

    そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

    侍ワークスは、独自案件を多く掲載しているだけでなく、

    ・応募から就業まで一貫したサポート

    ・就業後もアフターフォロー

    といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

    まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

    書いた人

    sato

    sato

    学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
    様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!