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

MySQL SELECT 문에서 IF() 함수 활용하는 방법

SELECT 문에서 MySQL IF() 함수 사용하기

MySQL의 IF() 함수는 SELECT 문 안에서도 충분히 활용할 수 있습니다. 핵심은 IF() 함수의 첫 번째 인자로 조건과 함께 컬럼 이름을 전달하는 것입니다. 이렇게 하면 조회되는 각 행마다 조건을 평가하여 원하는 값을 동적으로 출력할 수 있습니다.

실제 예제를 통해 이해해 보겠습니다. 다음은 'Students' 테이블에 저장된 데이터입니다.

mysql> Select * from Students;
+----+-----------+-----------+----------+----------------+
| id | Name      | Country   | Language | Course         |
+----+-----------+-----------+----------+----------------+
| 1  | Francis   | UK        | English  | Literature     |
| 2  | Rick      | USA       | English  | History        |
| 3  | Correy    | USA       | English  | Computers      |
| 4  | Shane     | France    | French   | Computers      |
| 5  | Validimir | Russia    | Russian  | Computers      |
| 6  | Steve     | Australia | English  | Geoinformatics |
| 7  | Rahul     | India     | Hindi    | Yoga           |
| 8  | Harshit   | India     | Hindi    | Computers      |
+----+-----------+-----------+----------+----------------+
8 rows in set (0.00 sec)

IF() 함수를 적용한 SELECT 쿼리

이제 SELECT 문 안에 IF() 함수를 포함한 아래 쿼리를 실행해 보겠습니다. 이 쿼리는 학생들의 이름과 과목 정보를 조회하면서, 언어(Language)가 영어(English)인 경우에는 'Eng_Language'를, 그렇지 않은 경우에는 'Other Language'를 출력하도록 처리합니다.

mysql> Select Name, IF(Language = 'English', "Eng_Language", "Other Language") AS 'Native Language', Course from students;
+-----------+-----------------+----------------+
| Name      | Native Language | Course         |
+-----------+-----------------+----------------+
| Francis   | Eng_Language    | Literature     |
| Rick      | Eng_Language    | History        |
| Correy    | Eng_Language    | Computers      |
| Shane     | Other Language  | Computers      |
| Validimir | Other Language  | Computers      |
| Steve     | Eng_Language    | Geoinformatics |
| Rahul     | Other Language  | Yoga           |
| Harshit   | Other Language  | Computers      |
+-----------+-----------------+----------------+
8 rows in set (0.00 sec)

쿼리 결과 분석

결과를 살펴보면 IF() 함수가 각 행별로 조건을 평가한 것을 확인할 수 있습니다.

  • Francis, Rick, Correy, Steve — Language 값이 'English'이므로 첫 번째 반환값인 'Eng_Language'가 출력됩니다.
  • Shane, Validimir, Rahul, Harshit — Language 값이 'French', 'Russian', 'Hindi' 등으로 조건에 해당하지 않으므로 두 번째 반환값인 'Other Language'가 출력됩니다.

IF() 함수의 기본 구문

참고로 MySQL IF() 함수의 기본 구문은 다음과 같습니다.

IF(조건식, 조건이 참일 때 반환값, 조건이 거짓일 때 반환값)

즉, 첫 번째 인자의 조건식이 TRUE이면 두 번째 인자를, FALSE이면 세 번째 인자를 반환합니다. SELECT 문에서 이 함수를 활용하면 별도의 애플리케이션 로직 없이도 데이터베이스 차원에서 조건부 값을 손쉽게 가공하여 조회할 수 있다는 점이 큰 장점입니다.