MySQL TRIM() 함수로 모든 행의 공백 제거 후 테이블 업데이트하기
테이블의 컬럼에 불필요한 공백(whitespace)이 포함된 데이터가 많으면 그만큼 저장 공간이 낭비됩니다. MySQL에서는 TRIM() 함수와 UPDATE 문을 함께 사용하면 단 한 번의 쿼리로 모든 행의 공백을 제거하고 테이블까지 즉시 갱신할 수 있습니다.
아래는 'Employee' 테이블의 모든 행에 공백이 포함되어 있는 경우를 보여주는 예시입니다.
예제
mysql> Select * from Employee; +------+----------------------+----------------------+----------------------+ | Id | Name | Address | Department | +------+----------------------+----------------------+----------------------+ | 100 | Raman | Delhi | IT | | 101 | Mohan | Haryana | History | | 102 | Shyam | Chandigarh | ENGLISH | | 103 | Sukhjeet Singh | Patiala | Computer Engg. | | 104 | Bimal Roy | Calcutta | Computer Engg. | +------+----------------------+----------------------+----------------------+ 5 rows in set (0.00 sec)
결과 집합에서 볼 수 있듯이 Employee 테이블의 각 행에는 상당한 양의 공백이 포함되어 있습니다. 다음과 같은 UPDATE 쿼리를 실행하면 공백을 제거하면서 동시에 테이블을 업데이트할 수 있습니다.
mysql> Update Employee SET Id = TRIM(Id), Name = TRIM(Name), Address = TRIM(Address), Department = TRIM(Department); Query OK, 5 rows affected (0.24 sec) Rows matched: 5 Changed: 5 Warnings: 0 mysql> Select * from Employee; +------+----------------+------------+----------------+ | Id | Name | Address | Department | +------+----------------+------------+----------------+ | 100 | Raman | Delhi | IT | | 101 | Mohan | Haryana | History | | 102 | Shyam | Chandigarh | ENGLISH | | 103 | Sukhjeet Singh | Patiala | Computer Engg. | | 104 | Bimal Roy | Calcutta | Computer Engg. | +------+----------------+------------+----------------+ 5 rows in set (0.00 sec)
업데이트 후 결과 집합을 보면 모든 공백이 깨끗하게 제거되고 테이블이 정상적으로 갱신된 것을 확인할 수 있습니다.
참고: TRIM() 함수의 다양한 활용
TRIM(str): 문자열 앞뒤의 공백을 모두 제거합니다.LTRIM(str): 문자열 왼쪽(앞쪽)의 공백만 제거합니다.RTRIM(str): 문자열 오른쪽(뒤쪽)의 공백만 제거합니다.
또한 TRIM(BOTH '문자' FROM str), TRIM(LEADING ...), TRIM(TRAILING ...) 형태를 사용하면 제거할 문자나 위치를 직접 지정할 수도 있습니다. 대량의 데이터를 정리할 때는 작업 전에 반드시 백업을 해두고, 인덱스가 설정된 컬럼을 수정하는 경우 성능에 미치는 영향도 함께 고려하는 것이 좋습니다.