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

MySQL에서 데이터 조회 시 여러 열의 NULL 값을 빈 문자열로 변환하는 방법

MySQL에서 데이터를 조회할 때 특정 열에 포함된 NULL 값을 빈 문자열('')로 바꾸어야 하는 경우가 종종 있습니다. 이럴 때 IFNULL() 또는 COALESCE() 함수를 활용하면 간단하게 해결할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, 데이터를 가져오는 시점에 여러 열의 NULL 값을 빈 문자열로 변환하는 방법을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 실습에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1849
     (
     ClientFirstName varchar(20),
     ClientLastName varchar(20)
     );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 추가합니다. 의도적으로 NULL 값이 포함된 데이터도 함께 넣었습니다.

mysql> insert into DemoTable1849 values('John',NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1849 values(NULL,'Miller');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1849 values(NULL,NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1849 values('Chris','Brown');
Query OK, 1 row affected (0.00 sec)

3. 현재 데이터 확인

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

mysql> select * from DemoTable1849;

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

+-----------------+----------------+
| ClientFirstName | ClientLastName |
+-----------------+----------------+
| John            |           NULL |
| NULL            |         Miller |
| NULL            |           NULL |
| Chris           |          Brown |
+-----------------+----------------+
4 rows in set (0.00 sec)

위 결과에서 ClientFirstName과 ClientLastName 열에 NULL 값이 그대로 출력되는 것을 확인할 수 있습니다.

4. NULL 값을 빈 문자열로 변환하는 쿼리

아래 쿼리는 데이터를 가져오는 시점에 IFNULL() 함수를 사용하여 두 열의 NULL 값을 빈 문자열로 대체합니다.

mysql> select ifnull(ClientFirstName,'') as ClientFirstName,
ifnull(ClientLastName,'') as ClientLastName from DemoTable1849;

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

+-----------------+----------------+
| ClientFirstName | ClientLastName |
+-----------------+----------------+
| John            |                |
|                 |         Miller |
|                 |                |
| Chris           |          Brown |
+-----------------+----------------+
4 rows in set (0.00 sec)

NULL 값이 모두 빈 문자열로 출력된 것을 확인할 수 있습니다.

IFNULL()과 COALESCE()의 차이점

IFNULL(값, 대체값)은 두 개의 인자만 받으며, 첫 번째 인자가 NULL일 경우 두 번째 인자를 반환합니다. 반면 COALESCE()는 여러 개의 인자를 받을 수 있고, 그중 NULL이 아닌 첫 번째 값을 반환합니다. 따라서 아래와 같이 COALESCE()를 사용해도 동일한 결과를 얻을 수 있습니다.

select coalesce(ClientFirstName,'') as ClientFirstName,
coalesce(ClientLastName,'') as ClientLastName from DemoTable1849;

두 함수 모두 원본 테이블의 데이터를 변경하지 않고 조회 결과에서만 NULL을 다른 값으로 치환한다는 점을 기억하시기 바랍니다.