Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL SELECT 문에서 IF() 함수 사용법 완벽 정리

MySQL의 IF() 함수는 주어진 조건이 참인지 거짓인지에 따라 서로 다른 값을 반환하는 조건부 함수입니다. CASE 문을 간단하게 대체할 수 있어, SELECT 문에서 조건에 따른 메시지나 값을 출력할 때 매우 유용하게 활용됩니다.

IF() 함수 기본 문법

SELECT IF(조건식, 조건이 참일 때 반환할 값, 조건이 거짓일 때 반환할 값) FROM 테이블명;

첫 번째 인자로 평가할 조건을 받고, 조건이 TRUE이면 두 번째 인자를, FALSE이면 세 번째 인자를 반환합니다.

예제 테이블 생성하기

먼저 실습에 사용할 테이블을 생성하겠습니다.

mysql> create table DemoTable
    (
    Value int
    );
Query OK, 0 rows affected (0.60 sec)

레코드 삽입

INSERT 명령을 사용해 테이블에 데이터를 추가합니다.

mysql> insert into DemoTable values(1000);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(2000);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(500);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(1100);
Query OK, 1 row affected (0.16 sec)

저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-------+
| Value |
+-------+
| 1000  |
| 2000  |
| 500   |
| 1100  |
+-------+
4 rows in set (0.00 sec)

IF() 함수를 활용한 조건부 조회

이제 IF() 함수를 사용해 값이 1000보다 큰지 작은지에 따라 다른 메시지를 출력하는 쿼리를 작성해 보겠습니다. CONCAT 함수와 함께 사용하면 동적인 문자열을 만들 수 있습니다.

mysql> select Value,IF(Value > 1000, CONCAT(Value,' is greater than 1000'),CONCAT(Value,' is lower than 1000')) AS Result from DemoTable;

위 쿼리의 실행 결과는 다음과 같습니다.

+-------+---------------------------+
| Value | Result                    |
+-------+---------------------------+
| 1000  | 1000 is lower than 1000   |
| 2000  | 2000 is greater than 1000 |
| 500   | 500 is lower than 1000    |
| 1100  | 1100 is greater than 1000 |
+-------+---------------------------+
4 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 Value가 1000보다 큰 경우(2000, 1100)에는 "greater than 1000"이라는 메시지가, 그렇지 않은 경우(1000, 500)에는 "lower than 1000"이라는 메시지가 반환된 것을 확인할 수 있습니다. 특히 1000은 조건식 Value > 1000에서 초과가 아니므로 FALSE로 평가되어 "lower than" 메시지가 출력되었습니다.

이처럼 MySQL의 IF() 함수를 사용하면 별도의 애플리케이션 로직 없이도 쿼리 내에서 간단한 조건 분기를 처리할 수 있습니다. 더 복잡한 다중 조건이 필요하다면 CASE WHEN 문을 사용하는 것이 좋습니다.