SQL Server

【SQL Server】SQL文の中で条件分岐させる2つの方法

SQLの文法

条件を記述する命令としていずれの言語でもIF文がありますが、SQL Serverでは以前はIF文が使えませんでした。

当時は条件分岐させるにはCASE文を使うしかなかったのですが今現在はCASE文を使う方法とIF文を使う方法を選択することができます。

IF文を使うかCASE文を使うか

他の言語の場合、分岐条件が多ければCASE文、少なければIF文という使い分けが一般的です。

SQL ServerではSQLServer2012からIF文(構文としてはIIF)が使えるようになったわけですが、他のSQL言語ではIIF文は使えません。

このため、他のDBと合わせる必要がある場合(載せ替える予定がある場合など)は迷わずCASE文を選択しましょう。

IIF文の使い方

基本の構文

IIF(【条件式】,【Trueの戻り値】, 【Falsの戻り値】)

パラメータは、条件、Trueの場合の戻り値、Falseの場合の戻り値の3つです。

今回は点数が60点以上を合格、60点未満を不合格と返す命令をサンプルとします。

条件式 点数>=60
Trueの戻り値 合格
Falseの戻り値 不合格

SELECT IIF(点数>=60, ‘合格’, ‘不合格’) FROM テスト結果TBL

条件が増えればIIFをネストして記述すること可能です。

SELECT IIF(点数>=60, ‘合格’, IIF(点数>=30,’赤点’, ‘青点’)) FROM テスト結果TBL

このサンプルでは60点以上が【合格】、30点以上60点未満が【赤点】、30点未満は【青点】を返します。

※どこかの学校の点数評価ですね(笑)

CASE文の使い方

基本の構文

CASE WHEN 【条件】 THEN 【Trueの戻り値】 ELSE 【Falseの戻り値】 END

IIF文と同じく点数が60点以上を合格、60点未満を不合格と返す命令をサンプルとして紹介します。

SELECT CASE WHEN 点数 >= 60 THEN ‘合格’ ELSE ‘不合格’ END FROM テスト結果TBL;

CASE文なので条件が増えればWHEN句を追記していきます。

SELECT
CASE
WHEN 点数 >= 60 THEN ‘合格’
WHEN 点数 >= 30 THEN ‘赤点’
ELSE ‘青点’
END;

ABOUT ME
アズビーパートナーズ
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。
今のスキルのままで大丈夫?

あなたのスキル。今のままで大丈夫ですか?

時代のニーズに合った開発スキルを身につけてあなたの価値を高めましょう。

\オンラインでも教室でも学べるおすすめのスクール/

TECH::CAMP(エンジニアスクール)

まずは基礎から・・・という方はProgateUdemyどっとインストールなどがおすすめ!

スキルアップについて詳しくはこちら