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

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

SQLを組んでいく中で

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

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

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

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

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

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

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

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

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

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

例えば…

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

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

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

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

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

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

まとめ

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

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

    LINEで送る
    Pocket

    最短でエンジニアを目指すなら侍エンジニア塾

    cta_under_bnr

    侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

    あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

    無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

    無料体験レッスンの詳細はこちら

    書いた人

    sato

    sato

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

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説