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

MySQL IF() 함수로 NULL 값을 원하는 값으로 바꾸는 방법

데이터베이스를 조회할 때 특정 열의 값이 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() 함수가 더 유연하게 활용됩니다.