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

MySQL에서 빈 문자열을 NULL로 업데이트하는 방법

MySQL에서 빈 문자열을 NULL로 업데이트하는 방법

테이블에 저장된 빈 문자열('')을 NULL로 변경하고 싶다면 IF() 함수와 UPDATE 명령을 함께 사용하면 됩니다. IF() 함수는 조건이 참일 때 두 번째 인자를, 거짓일 때 세 번째 인자를 반환하는 조건 함수로, 이를 활용하면 빈 값인 경우에만 NULL을 넣도록 간단히 처리할 수 있습니다.

아래에서 전체 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성

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

mysql> create table DemoTable1601
    -> (
    -> FirstName varchar(20),
    -> LastName varchar(20)
    -> );
Query OK, 0 rows affected (0.53 sec)

2. 데이터 삽입

insert 명령으로 몇 개의 레코드를 삽입합니다. 이때 일부 레코드에는 의도적으로 빈 문자열('')을 넣어 두었습니다.

mysql> insert into DemoTable1601 values('John','Doe');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1601 values('Adam','');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1601 values('David','Miller');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1601 values('Chris','');
Query OK, 1 row affected (0.11 sec)

3. 현재 데이터 확인

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

mysql> select * from DemoTable1601;

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

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

Adam과 Chris의 LastName이 빈 문자열로 저장되어 있는 것을 확인할 수 있습니다.

4. 빈 값을 NULL로 업데이트하는 쿼리

다음은 열의 값을 NULL 또는 기존 값으로 업데이트하는 핵심 쿼리입니다.

mysql> update DemoTable1601 set LastName=if(LastName='',NULL,LastName);
Query OK, 2 rows affected (0.22 sec)
Rows matched: 4  Changed: 2 Warnings: 0

이 쿼리는 LastName이 빈 문자열('')이면 NULL로 바꾸고, 그렇지 않으면 원래 값을 그대로 유지합니다. 실행 결과 4개 행 중 2개 행이 변경된 것을 확인할 수 있습니다.

5. 결과 확인

테이블의 레코드를 다시 한번 조회해 보겠습니다.

mysql> select * from DemoTable1601;

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

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

Adam과 Chris의 LastName이 정상적으로 NULL로 변경된 것을 확인할 수 있습니다.

정리 및 추가 팁

IF(조건, 참일 때 값, 거짓일 때 값) 구문을 활용하면 별도의 프로시저나 복잡한 로직 없이 하나의 UPDATE 쿼리만으로 빈 문자열을 NULL로 손쉽게 변환할 수 있습니다.

참고로 MySQL에서 제공하는 NULLIF() 함수를 사용하면 더욱 간결하게 처리할 수도 있습니다. 다음과 같이 작성하면 동일한 결과를 얻을 수 있습니다.

update DemoTable1601 set LastName = nullif(LastName, '');

NULLIF(expr1, expr2)는 두 표현식이 같으면 NULL을 반환하고, 다르면 첫 번째 표현식을 반환하기 때문에 빈 문자열을 NULL로 치환하는 작업에 특히 유용합니다.