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

MySQL에서 빈 셀만 NULL로 업데이트하는 방법 – NULLIF() 함수 활용하기

MySQL에서 빈 셀만 NULL로 업데이트하기

테이블에 저장된 빈 문자열('') 값만 NULL로 변경하고 싶다면 MySQL의 NULLIF() 함수를 사용하면 됩니다. 이 함수는 두 인자가 서로 같으면 NULL을 반환하고, 다르면 첫 번째 인자를 그대로 반환합니다. 따라서 UPDATE 문을 실행해도 테이블의 모든 셀이 NULL이 되는 것이 아니라, 빈 값인 행만 NULL로 변경됩니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    Name varchar(50)
);
Query OK, 0 rows affected (1.73 sec)

2. 데이터 삽입

insert 명령으로 레코드를 삽입합니다. 여기서는 의도적으로 빈 문자열도 함께 입력합니다.

mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.15 sec)

3. 현재 데이터 확인

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

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

+-------+
| Name  |
+-------+
| Mike  |
|       |
| David |
|       |
| Mike  |
+-------+
5 rows in set (0.00 sec)

'Mike'와 'David' 사이에 빈 문자열이 저장된 행이 두 개 있는 것을 확인할 수 있습니다.

4. 빈 셀만 NULL로 업데이트하는 쿼리

다음은 빈 셀만 NULL로 업데이트하는 쿼리입니다.

mysql> update DemoTable
   set Name=NULLIF(Name,'');
Query OK, 2 rows affected (0.19 sec)
Rows matched: 5 Changed: 2 Warnings: 0

실행 결과에서 "Changed: 2"로 표시된 것처럼, 전체 5개 행 중 실제로 변경된 것은 빈 문자열이었던 2개 행뿐입니다. 나머지 데이터는 그대로 유지됩니다.

5. 업데이트 후 결과 확인

테이블을 다시 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+-------+
| Name  |
+-------+
| Mike  |
| NULL  |
| David |
| NULL  |
| Mike  |
+-------+
5 rows in set (0.00 sec)

정리

NULLIF(Name, '')은 Name 값이 빈 문자열일 때 NULL을 반환하고, 그 외의 경우에는 원래 값을 그대로 반환합니다. 따라서 UPDATE ... SET 컬럼명 = NULLIF(컬럼명, '') 구문을 활용하면 빈 셀만 안전하게 NULL로 변환할 수 있으며, 정상적인 데이터는 전혀 영향을 받지 않습니다.