데이터베이스를 조회할 때 특정 열의 값이 NULL로 저장되어 있으면, 결과 화면에 빈칸이나 NULL이 그대로 출력되어 데이터를 해석하기 어려울 수 있습니다. 이럴 때 MySQL의 IF() 함수를 사용하면 NULL 대신 'N/A'처럼 원하는 값을 표시할 수 있습니다.
IF() 함수의 기본 문법
IF() 함수는 조건식을 평가한 뒤, 조건이 참이면 두 번째 인자를, 거짓이면 세 번째 인자를 반환하는 제어 흐름 함수입니다.
IF(조건식, 조건이_참일_때_값, 조건이_거짓일_때_값)
예제 데이터 확인
'Employee' 테이블에서 두 직원의 salary(급여) 열 값이 NULL로 저장되어 있다고 가정해 보겠습니다. 아래 데이터를 그대로 조회하면 NULL 값 때문에 정보가 불완전해 보입니다.
mysql> Select * from employee; +----+--------+--------+ | ID | Name | Salary | +----+--------+--------+ | 1 | Gaurav | 50000 | | 2 | Rahul | 20000 | | 3 | Advik | 25000 | | 4 | Aarav | 65000 | | 5 | Ram | 20000 | | 6 | Mohan | 30000 | | 7 | Aryan | NULL | | 8 | Vinay | NULL | +----+--------+--------+ 8 rows in set (0.22 sec)
IF() 함수로 NULL 대신 'N/A' 출력하기
아래 쿼리처럼 IF() 함수 안에서 Salary IS NULL 조건을 검사하면, NULL인 행에는 'N/A'를 반환하고 나머지 행에는 실제 급여 값을 그대로 반환합니다.
mysql> Select ID,Name,IF(Salary IS NULL, 'N/A',Salary) As 'Salary' from employee; +----+--------+--------+ | ID | Name | Salary | +----+--------+--------+ | 1 | Gaurav | 50000 | | 2 | Rahul | 20000 | | 3 | Advik | 25000 | | 4 | Aarav | 65000 | | 5 | Ram | 20000 | | 6 | Mohan | 30000 | | 7 | Aryan | N/A | | 8 | Vinay | N/A | +----+--------+--------+ 8 rows in set (0.00 sec)
결과를 보면 Aryan과 Vinay의 급여가 더 이상 NULL로 표시되지 않고 'N/A'로 출력된 것을 확인할 수 있습니다. 별칭(Alias)으로 As 'Salary'를 지정했기 때문에 열 이름도 깔끔하게 유지됩니다.
참고: 다른 대체 방법
같은 목적이라면 IFNULL(Salary, 'N/A') 또는 COALESCE(Salary, 'N/A') 함수를 사용해도 동일한 결과를 얻을 수 있습니다. 다만 여러 조건 분기가 필요하거나 NULL 외의 조건도 함께 처리해야 한다면 IF() 함수가 더 유연하게 활용됩니다.