【MySQL】IFとCASEで分岐させる方法


ここではMySQLで、IFとCASEで分岐させる方法について紹介しています。

IFで分岐させる方法

IF関数を使うことで、SQL内で条件分岐させることが出来ます。

IF関数の基本的な使い方は次の通りです。

IF(条件,真の時に返す値,偽の時に返す値)

次のSQLでは、dept列の値が’HR’のとき1を’HR’以外のとき0を返しています。

mysql> SELECT emp_id ,emp_name ,dept ,if(dept='HR',1,0) FROM tab1;
+--------+----------+-------+-------------------+
| emp_id | emp_name | dept  | if(dept='HR',1,0) |
+--------+----------+-------+-------------------+
| 00001  | Suzuki   | HR    |                 1 |
| 00002  | Tanaka   | SALES |                 0 |
| 00003  | Kizaki   | SALES |                 0 |
+--------+----------+-------+-------------------+
3 rows in set (0.02 sec)

CASEで分岐させる方法

CASE関数を使うことで、SQL内で条件分岐させることが出来ます。

CASE関数の基本的な使い方は次の通りです。

CASE WHEN 条件 THEN 真の時に返す値 ELSE 偽の時に返す値 END

次のSQLでは、dept列の値が’HR’のとき1を’HR’以外のとき0を返しています。

mysql> SELECT emp_id ,emp_name ,dept ,CASE WHEN dept='HR' THEN 1 ELSE 0 END FROM tab1;
+--------+----------+-------+-------------------------------------------+
| emp_id | emp_name | dept  | CASE   WHEN dept='HR' THEN 1   ELSE 0 END |
+--------+----------+-------+-------------------------------------------+
| 00001  | Suzuki   | HR    |                                         1 |
| 00002  | Tanaka   | SALES |                                         0 |
| 00003  | Kizaki   | SALES |                                         0 |
+--------+----------+-------+-------------------------------------------+
3 rows in set (0.00 sec)

CASE文は次のSQLのようにWHEN~を追加して、複数の条件分岐を作ることが出来ます。

SELECT
 emp_id
 ,emp_name
 ,dept
 ,CASE
   WHEN dept='HR' THEN 1
   WHEN dept='SALES' THEN 2 
   ELSE 0
 END 
FROM
 tab1
;