데이터베이스 작업을 하다 보면 전화번호나 코드처럼 숫자 사이에 공백이 포함된 문자열 데이터를 다루는 경우가 많습니다. 이런 공백을 한 번에 제거하고 싶다면 MySQL의 REPLACE() 함수를 활용하면 간단하게 해결할 수 있습니다.
1. 예제 테이블 생성
먼저 숫자를 저장할 테이블을 생성합니다. 공백이 포함된 값을 그대로 저장할 수 있도록 VARCHAR 타입으로 컬럼을 정의합니다.
mysql> create table DemoTable1546
-> (
-> Number varchar(20)
-> );
Query OK, 0 rows affected (0.99 sec)
2. 샘플 데이터 삽입
INSERT 문을 사용해 공백이 포함된 숫자 값들을 입력합니다.
mysql> insert into DemoTable1546 values('145 78 90');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1546 values('89 789 564 903');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1546 values('1345 7894 866 653534');
Query OK, 1 row affected (0.12 sec)3. 현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1546;
실행 결과는 다음과 같습니다.
+----------------------+
| Number |
+----------------------+
| 145 78 90 |
| 89 789 564 903 |
| 1345 7894 866 653534 |
+----------------------+
3 rows in set (0.00 sec)
4. REPLACE 함수로 공백 제거하기
숫자 사이의 공백을 제거하는 핵심 쿼리입니다. REPLACE(컬럼명, ' ', '') 구문은 해당 컬럼의 모든 공백(' ')을 빈 문자열('')로 치환합니다.
mysql> update DemoTable1546 set Number=replace(Number,' ','');
Query OK, 3 rows affected (0.13 sec)
Rows matched: 3 Changed: 3 Warnings: 0
5. 변경된 결과 확인
업데이트 후 테이블을 다시 조회하면 공백이 모두 제거된 것을 확인할 수 있습니다.
mysql> select * from DemoTable1546;
실행 결과는 다음과 같습니다.
+-------------------+
| Number |
+-------------------+
| 1457890 |
| 89789564903 |
| 13457894866653534 |
+-------------------+
3 rows in set (0.00 sec)
정리
MySQL에서 문자열 내 특정 문자를 치환하려면 REPLACE() 함수를 사용하면 됩니다. 위 예제처럼 replace(Number, ' ', '')를 UPDATE 문과 함께 사용하면 숫자 사이의 모든 공백을 손쉽게 제거할 수 있습니다. 참고로 REPLACE 함수는 대소문자를 구분하며, 원본 데이터를 직접 수정하므로 중요한 데이터라면 실행 전 백업을 권장합니다.