MySQL TRIM() 함수로 모든 행의 불필요한 공백 제거하기
MySQL에서 문자열 앞뒤에 포함된 불필요한 공백(whitespace)을 제거하려면 TRIM() 함수를 활용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1405
-> (
-> FirstName varchar(20),
-> LastName varchar(20)
-> );
Query OK, 0 rows affected (0.55 sec)
다음으로 INSERT 문을 사용해 앞뒤 공백이 포함된 레코드들을 입력합니다.
mysql> insert into DemoTable1405 values(' Chris',' Brown ');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1405 values('David ',' Miller ');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable1405 values(' Carol ',' Taylor ');
Query OK, 1 row affected (0.19 sec)SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1405;
위 쿼리는 다음과 같은 결과를 출력합니다.
+------------------+----------------+
| FirstName | LastName |
+------------------+----------------+
| Chris | Brown |
| David | Miller |
| Carol | Taylor |
+------------------+----------------+
3 rows in set (0.00 sec)
출력 결과를 보면 각 컬럼 값의 앞뒤에 불필요한 공백이 함께 저장되어 있는 것을 확인할 수 있습니다.
TRIM() 함수로 공백 제거 후 전체 행 업데이트
이제 TRIM() 함수를 사용해 모든 행의 공백을 제거하면서 업데이트하는 쿼리는 다음과 같습니다.
mysql> update DemoTable1405 set FirstName=trim(FirstName),LastName=trim(LastName);
Query OK, 3 rows affected (0.18 sec)
Rows matched: 3 Changed: 3 Warnings: 0
업데이트가 정상적으로 적용되었는지 테이블의 레코드를 다시 한번 확인해 보겠습니다.
mysql> select * from DemoTable1405;
실행 결과는 다음과 같습니다.
+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Chris | Brown |
| David | Miller |
| Carol | Taylor |
+-----------+----------+
3 rows in set (0.00 sec)
모든 행에서 FirstName과 LastName 컬럼의 앞뒤 공백이 성공적으로 제거된 것을 확인할 수 있습니다.
TRIM() 함수 사용 시 참고 사항
TRIM() 함수는 문자열의 앞쪽(leading)과 뒤쪽(trailing) 공백만 제거하며, 단어 사이에 있는 공백은 그대로 유지됩니다. 따라서 문자열 내부의 연속된 공백까지 정리하고 싶다면 REPLACE() 또는 REGEXP_REPLACE() 함수를 함께 활용해야 합니다.
TRIM(str): 문자열 양쪽 끝의 공백 제거LTRIM(str): 왼쪽(앞쪽) 공백만 제거RTRIM(str): 오른쪽(뒤쪽) 공백만 제거
이처럼 UPDATE 문과 TRIM() 함수를 조합하면 대량의 데이터에서도 손쉽게 불필요한 공백을 일괄 정리할 수 있어 데이터 클렌징 작업에 매우 유용합니다.