REPLACE() 함수로 문자열 사이의 공백 제거하기
데이터베이스를 운영하다 보면 문자열 사이에 불필요한 공백이 포함된 데이터를 마주치는 경우가 흔합니다. 이럴 때 MySQL의 REPLACE() 함수를 사용하면 손쉽게 공백을 제거할 수 있습니다.
기본 문법
공백을 제거하는 UPDATE 쿼리의 기본 문법은 다음과 같습니다.
UPDATE yourTableName SET yourColumnName = REPLACE(yourColumnName, ' ', '');
위 쿼리는 지정한 컬럼의 모든 행에서 공백(' ')을 찾아 빈 문자열('')로 치환합니다.
예제 테이블 생성
실제 동작 과정을 이해하기 위해 예제 테이블을 먼저 생성해 보겠습니다.
mysql> create table removeSpaceDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> UserId varchar(20),
-> UserName varchar(10),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.81 sec)
샘플 데이터 삽입
INSERT 명령어를 사용해 공백이 포함된 데이터를 입력합니다.
mysql> insert into removeSpaceDemo(UserId,UserName) values(' John 12 67 ','John');
Query OK, 1 row affected (0.33 sec)
mysql> insert into removeSpaceDemo(UserId,UserName) values('Carol 23 ','Carol');
Query OK, 1 row affected (0.34 sec)현재 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회합니다.
mysql> select *from removeSpaceDemo;
실행 결과는 다음과 같습니다.
+----+------------------+----------+
| Id | UserId | UserName |
+----+------------------+----------+
| 1 | John 12 67 | John |
| 2 | Carol 23 | Carol |
+----+------------------+----------+
2 rows in set (0.00 sec)
출력 결과를 보면 UserId 컬럼의 값들 사이에 공백이 포함되어 있는 것을 확인할 수 있습니다.
REPLACE() 함수로 공백 제거 실행
이제 UPDATE 쿼리와 REPLACE() 함수를 함께 사용해 공백을 제거합니다.
mysql> update removeSpaceDemo set UserId=REPLACE(UserId,' ','');
Query OK, 2 rows affected (0.63 sec)
Rows matched: 2 Changed: 2 Warnings:
최종 결과 확인
변경된 데이터를 다시 조회해 보겠습니다.
mysql> select *from removeSpaceDemo;
실행 결과는 다음과 같습니다.
+----+----------+----------+
| Id | UserId | UserName |
+----+----------+----------+
| 1 | John1267 | John |
| 2 | Carol23 | Carol |
+----+----------+----------+
2 rows in set (0.00 sec)
'John 12 67'은 'John1267'로, 'Carol 23'은 'Carol23'으로 변경되며 모든 공백이 성공적으로 제거된 것을 확인할 수 있습니다.
참고: REPLACE()와 TRIM()의 차이점
TRIM() 함수는 문자열 앞뒤의 공백만 제거하는 반면, REPLACE() 함수는 문자열 내부를 포함한 모든 위치의 공백을 제거합니다. 따라서 문자 사이의 공백까지 깨끗하게 정리하고 싶다면 REPLACE() 함수를 사용하는 것이 적합합니다.