ここでは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
;