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 문에서 이 함수를 활용하면 별도의 애플리케이션 로직 없이도 데이터베이스 차원에서 조건부 값을 손쉽게 가공하여 조회할 수 있다는 점이 큰 장점입니다.