受講料が最大70%OFF 受講料が最大70%OFF

SQLで関数を作成する際には知っておきたいSQLのIF構文。今回の記事では、実践的に使用できる関数の作成を通して、SQLのIF構文の使用方法を理解できるようにしていきましょう。

まだSQLのIF構文を使用したことがない方に向けても、手を動かして使い方を理解できるコードをご紹介していきます。それでは早速見ていきましょう。

本記事の要点
  • SQLのIF構文の概要
  • IF構文の基本的な使い方
  • IF構文を使った関数の作成

SQLのIF構文とは?

SQLのIF構文とは、「もしAなら〇〇を実行する。もしBなら△△を実行する。」という条件式を作れる構文のことです。MySQLのIF構文では、以下のような形式で条件式を作成することができます。

IF search_condition1(条件式1) THEN statement_list1(実行処理1);
    ELSEIF search_condition2(条件式2) THEN statement_list2(実行処理2);
    ELSE statement_list3(実行処理3);
END IF;

上記の場合、条件式1がtrue(真)の場合には、実行処理1を行います。条件式2がtrue(真)の場合には、実行処理2を行います。そのどちらにも当てはまらない場合には、結果がfalseとなり、実行処理3が行われます。

また、条件式を列挙するはじめと終わりに「IF」と「END IF」を設置する決まりがあります。このように決まり切った書き方が定められているため、IF構文と呼ばれているのです。

SQLのIF構文を使用することによって、「もし時間が『朝』の場合には『おはよう』を、『昼』の場合には『こんにちは』を、そして『夜』の場合には『こんばんは』を出力する」といったことが可能となります。

最初に示したIF構文には「ELSE IF」がありましたが、不要な場合には以下のようにIF構文を記述することもできます。

IF search_condition1(条件式1) THEN statement_list1(実行処理1);
    ELSE statement_list2(実行処理2);
END IF;

逆に複数の条件式を記述したい場合には、以下のように記述することができます。

IF search_condition1(条件式1) THEN statement_list1(実行処理1);
    ELSEIF search_condition2(条件式2) THEN statement_list2(実行処理2);
    ELSEIF search_condition3(条件式3) THEN statement_list2(実行処理3);
    ELSEIF search_condition4(条件式4) THEN statement_list2(実行処理4);
 ...
    ELSE statement_list5(実行処理5);
END IF;

条件式を作成する際に、柔軟に「ELSE IF」の数を変えることができることを覚えておきましょう。

ポテパンダの一言メモ

今回の記事では、SQLのIF構文の説明に「MySQL」を用いています。関係データベース管理システム(RDBMS)には、他にも「PostgreSQL」や「Firebird SQL」などがあります。それぞれでIF構文の形が若干異なりますので、MySQL以外のRDBMSを使用する際には、公式ドキュメントを参考にしてみましょう。

【関連記事】
▶︎MySQLとは?MySQLの基本から他のデータベースとの違いと優位性を解説!
▶︎MySQLやPostgreSQLをお使いの方へおススメ!Amazon Aurora
▶︎SQLとはどういうもの? 独自拡張と標準SQLの大きな違いって、何?

SQLのIF構文の基本的な使用方法

それでは、早速手を動かしながらSQLのIF構文を用いて基本的な使い方を覚えていきましょう。

IF文だけのシンプルな条件式

まずはIF文だけを使用したシンプルな条件式を使ってみましょう。

              
mysql> SELECT IF( 500 < 1000, 'YES', 'NO');

以下が出力結果です。

                                                                                            
+------------------------------+
| IF( 500 < 1000, 'YES', 'NO') |
+------------------------------+
| YES                          |
+------------------------------+
1 row in set (0.00 sec)

上記のIF文は「もし500が1000未満であればYESを出力する。そうでなければNOを出力する」という意味となります。上記で見たSQLのIF構文とは形が異なりますが、このような書き方も可能です。

IF文内で関数を使用する条件式

次に>IF文内で関数を使用する条件式を使ってみましょう。

              
mysql> SELECT IF(STRCMP(1000,100) = 1, "BIG", "SMALL");       

以下が出力結果です。

                                                                                            
+------------------------------------------+
| IF(STRCMP(1000,100) = 1, "BIG", "SMALL") |
+------------------------------------------+
| BIG                                      |
+------------------------------------------+
1 row in set (0.00 sec)

上記のIF文では、STRCMPという2つの要素を比較する関数を使用しています。この関数とIF文を用いることで「もし1000が100より大きければBIGを出力する。そうでなければSMALLを出力する」という条件式を記述することができます。

SQLのIF構文を使って関数を作ってみよう

最後にSQLのIF構文を使用した関数を実際に作成してみましょう。こちらでは「引数に入れた数字が10より大きいか少ないか、もしくは数字以外かを見分ける関数」を作成していきます。

まずは関数を作成するところからはじめます。

                                                                                            
mysql> DELIMITER //
mysql> CREATE PROCEDURE compareNumber(IN target INT)
    -> If target > 10 THEN SELECT 'BIGGER THAN 10';
    -> ELSEIF target  ELSE SELECT SELECT 'THIS IS 10!';
    -> END IF;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)

では、実際に上記の関数を実行してみましょう。

                                                                                            
mysql> CALL compareNumber(10);
+-------------+
| THIS IS 10! |
+-------------+
| THIS IS 10! |
+-------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> CALL compareNumber(100);
+----------------+
| BIGGER THAN 10 |
+----------------+
| BIGGER THAN 10 |
+----------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> CALL compareNumber(1);
+-----------------+
| SMALLER THAN 10 |
+-----------------+
| SMALLER THAN 10 |
+-----------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

関数で設定した通り、IF構文が出力結果を出し分けてくれていることが分かりますね。このようにIF文を関数で使用すると、自分専用の便利な関数を作成することができるはずです。

まとめ

今回の記事では、SQLのIF構文の基礎的な学習から始まり、実践的に使用できる関数の作成を通して、SQLのIF構文の使用方法を理解してきました。IF構文を積極的に活用することで、便利な関数を作成できるだけでなく、複雑な条件分岐も簡単に処理できるようになります。ぜひ、今回の記事を機会に、SQL文の中でIF構文を扱っていきましょう。

【関連記事】
▶︎SQL if文のサンプルコード集 NULL判定や、Switch文のような分岐をする方法
▶︎【実例で学ぶ】SQL「UPDATE」文の使い方 基礎・応用編

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。