MySQLのIF文で複数の条件を扱う方法(AND・OR演算子の使い方)
MySQLのIF文で複数条件を扱うには?
MySQLのストアドプロシージャ内では、IF文にAND演算子やOR演算子を組み合わせることで、複数の条件を一度に判定することができます。ここでは、その基本構文と実際の使用例をわかりやすく解説します。
基本構文
DECLARE X int;
DECLARE Y int;
SET X = value1;
SET Y = value2;
IF ( (X < Y AND X > value1 AND Y > value2) OR X != anyValueToCompare) THEN
yourStatement;
ELSE
yourStatement;
END IF;この構文では、AND演算子で結ばれた複数の条件がすべて成立する場合、もしくはOR演算子による別の条件が成立した場合に、THEN以降の処理が実行されます。どちらの条件も満たさない場合はELSEブロックの処理が実行されます。
ストアドプロシージャの作成例
それでは、実際にストアドプロシージャを作成して動きを確認してみましょう。以下のクエリでプロシージャを作成します。
mysql> DELIMITER //
mysql> create procedure SP_IFELSEDEMO()
-> BEGIN
-> DECLARE X int;
-> DECLARE Y int;
-> SET X=100;
-> SET Y=400;
-> IF ( (X < Y AND X > 99 AND Y > 300) OR X != 10 ) THEN
-> SELECT 'Logic is Correct';
-> ELSE
-> SELECT 'Logic is not Correct';
-> END IF;
-> END;
-> //
Query OK, 0 rows affected (0.27 sec)
mysql> DELIMITER ;この例では、変数Xに100、Yに400を設定し、「X < Y かつ X > 99 かつ Y > 300」という複数条件がすべて真であるか、あるいは「X ≠ 10」であるかを判定しています。
ストアドプロシージャの呼び出し方
作成したストアドプロシージャは、CALLコマンドを使用して呼び出します。
mysql> call SP_IFELSEDEMO();
実行結果
+------------------+ | Logic is Correct | +------------------+ | Logic is Correct | +------------------+ 1 row in set (0.04 sec) Query OK, 0 rows affected (0.07 sec)
X=100、Y=400の場合、「X < Y(100 < 400)」「X > 99」「Y > 300」のすべての条件が満たされているため、THEN側の処理が実行され「Logic is Correct」が出力されました。このように、ANDやOR演算子を活用することで、IF文でも柔軟に複雑な条件分岐を実装できます。
-
MySQLのTINYINT型カラムに対してUPDATEステートメントを使用する方法
MySQLでは、TINYINT型のカラムは真偽値(true/false)を扱う際によく利用されます。この記事では、TINYINT型のカラムを持つテーブルに対して、UPDATEステートメントで値を更新する手順を具体的に解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成します。ここでは、isMarried カラムを TINYINT 型として定義しています。mysql> create table DemoTable -> ( -> EmployeeId int, -> isMarried tinyint -> );Query O
-
MySQLのUPDATE文でIF()関数を使い、条件に応じてカラムの値を設定する方法
MySQLでは、UPDATE文の中でIF()関数を組み合わせることで、条件に応じた値を柔軟に設定できます。本記事では、学生の点数データを例に、点数が60点より大きいかどうかを判定し、「PASS」または「FAIL」を自動的にStatusカラムへ設定する方法を解説します。IF()関数の基本構文IF()関数は以下のような形式で使用します。IF(条件, 条件が真の場合の値, 条件が偽の場合の値)この関数をUPDATE文のSET句に記述することで、行ごとに異なる値を一括して更新できます。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable