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

MySQL IFNULL() 함수 활용법 – NULL이 아닌 값만 깔끔하게 추출하는 방법

특정 열의 값이 NULL이 아닐 경우에는 해당 값을 그대로 반환하고, NULL일 경우에는 다른 열의 값을 대신 가져오고 싶은 상황이 종종 있습니다. 이럴 때 MySQL에서는 IFNULL() 함수를 사용하면 간단하게 해결할 수 있습니다.

IFNULL() 함수란?

IFNULL(값1, 값2) 형태로 사용하며, 첫 번째 인자가 NULL이 아니면 첫 번째 값을 반환하고, NULL이면 두 번째 값을 반환합니다. 이번 글에서는 실제 예제를 통해 동작 방식을 살펴보겠습니다.

1. 예제 테이블 생성

먼저 이름 정보를 담을 테이블을 생성합니다.

mysql> create table DemoTable
(
    FirstName varchar(100),
    LastName varchar(100)
);
Query OK, 0 rows affected (0.62 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다. 일부러 FirstName 또는 LastName이 NULL인 행도 포함시켰습니다.

mysql> insert into DemoTable values('John','Doe');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values(NULL,'Taylor');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('David',NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(NULL,'Miller');
Query OK, 1 row affected (0.12 sec)

3. 전체 데이터 확인

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

mysql> select *from DemoTable;

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

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| John      | Doe      |
| NULL      | Taylor   |
| David     | NULL     |
| NULL      | Miller   |
+-----------+----------+
4 rows in set (0.00 sec)

4. IFNULL()을 활용한 쿼리 실행

이제 FirstName 값이 NULL이 아니면 FirstName을, NULL이면 LastName을 대신 반환하는 쿼리를 작성합니다.

mysql> select ifnull(FirstName,LastName) as Result from DemoTable;

5. 최종 실행 결과

쿼리를 실행하면 다음과 같이 각 행마다 NULL이 아닌 값이 하나씩 깔끔하게 출력됩니다.

+--------+
| Result |
+--------+
| John   |
| Taylor |
| David  |
| Miller |
+--------+
4 rows in set (0.00 sec)

마무리

이처럼 IFNULL() 함수를 사용하면 NULL 처리 로직을 별도의 조건문 없이 한 줄의 쿼리로 해결할 수 있습니다. 참고로 세 개 이상의 값을 순차적으로 검사해야 하는 경우에는 COALESCE() 함수를 사용하는 것도 좋은 방법입니다. 실무에서 데이터 정제나 리포트 작성 시 자주 활용되니 꼭 기억해 두세요.