MySQL에서는 IF() 함수를 사용하면 SELECT 쿼리 안에서 조건문을 활용할 수 있습니다. 조건이 참이면 첫 번째 값을, 거짓이면 두 번째 값을 반환하는 방식입니다.
기본 문법
MySQL 쿼리에 IF 문을 삽입하려면 아래와 같은 구문을 사용합니다.
SELECT yourColumnName, IF(yourCondition, yourStatement1, yourStatement2) FROM yourTableName;
예제로 살펴보기
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> CREATE TABLE DemoTable1571
-> (
-> Id int,
-> Value int
-> );
Query OK, 0 rows affected (5.63 sec)2단계: 데이터 삽입
INSERT 명령을 사용해 테이블에 레코드를 추가합니다.
mysql> INSERT INTO DemoTable1571 VALUES(101,500); Query OK, 1 row affected (1.07 sec) mysql> INSERT INTO DemoTable1571 VALUES(102,450); Query OK, 1 row affected (0.47 sec) mysql> INSERT INTO DemoTable1571 VALUES(103,300); Query OK, 1 row affected (0.19 sec) mysql> INSERT INTO DemoTable1571 VALUES(104,700); Query OK, 1 row affected (0.23 sec)
3단계: 전체 데이터 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> SELECT * FROM DemoTable1571;
위 쿼리는 다음과 같은 결과를 출력합니다.
+------+-------+ | Id | Value | +------+-------+ | 101 | 500 | | 102 | 450 | | 103 | 300 | | 104 | 700 | +------+-------+ 4 rows in set (0.00 sec)
IF 문을 활용한 조건 쿼리
이제 IF 문을 사용해 Value 값이 550보다 큰지 여부를 판별하는 쿼리를 작성해 보겠습니다.
mysql> SELECT Value, IF(Value > 550, 'Value is greater than 550', 'Value is less than 550') FROM DemoTable1571;
실행 결과는 다음과 같습니다.
+-------+------------------------------------------------------------------------+ | Value | if(Value > 550, 'Value is greater than 550','Value is less than 550') | +-------+------------------------------------------------------------------------+ | 500 | Value is less than 550 | | 450 | Value is less than 550 | | 300 | Value is less than 550 | | 700 | Value is greater than 550 | +-------+------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
정리
IF(조건식, 참일 때 값, 거짓일 때 값) 형태로 작성하면 쿼리 결과에 조건 분기를 손쉽게 적용할 수 있습니다. 위 예제에서는 Value 값이 550을 초과하는 경우와 그렇지 않은 경우를 각각 다른 문자열로 출력했습니다. 이처럼 IF() 함수는 데이터를 조건에 따라 가공해서 보여줄 때 매우 유용하게 활용됩니다.