MySQL에서는 TRIM() 함수를 UPDATE 문과 함께 사용하면 열의 모든 값에서 특정 문자열을 한 번에 제거할 수 있습니다. 아래 예제를 통해 구체적인 사용 방법을 살펴보겠습니다.
예제
'Employee' 테이블의 'Department' 열 모든 값에 'Dept.'라는 문자열이 붙어 있는 다음과 같은 데이터가 있다고 가정해 보겠습니다.
mysql> Select * from Employee; +------+----------------+------------+----------------------+ | Id | Name | Address | Department | +------+----------------+------------+----------------------+ | 100 | Raman | Delhi | IT Dept. | | 101 | Mohan | Haryana | History Dept. | | 102 | Shyam | Chandigarh | ENGLISH Dept. | | 103 | Sukhjeet Singh | Patiala | Computer Engg. Dept. | | 104 | Bimal Roy | Calcutta | Computer Engg. Dept. | +------+----------------+------------+----------------------+ 5 rows in set (0.01 sec)
이제 아래 쿼리를 실행하면 Department 열 값에서 'Dept.'가 제거되면서 테이블까지 함께 업데이트됩니다.
mysql> Update Employee set Department = TRIM(Trailing 'Dept.' FROM Department); Query OK, 5 rows affected (0.10 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)
위 결과 집합을 보면 Department 열의 값에서 더 이상 'Dept.'가 남아 있지 않은 것을 확인할 수 있습니다.
TRIM() 함수 문법 정리
TRIM() 함수는 제거할 위치를 직접 지정할 수 있어 상황에 맞게 활용할 수 있습니다.
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
- LEADING : 문자열 앞쪽(접두사)에서 지정한 문자열을 제거합니다.
- TRAILING : 문자열 뒤쪽(접미사)에서 지정한 문자열을 제거합니다. 위 예제처럼 값 끝에 붙은 'Dept.'를 없앨 때 사용됩니다.
- BOTH : 문자열 양쪽 모두에서 지정한 문자열을 제거합니다.
예를 들어 값 앞쪽에 붙은 접두사를 제거하고 싶다면 다음과 같이 작성하면 됩니다.
Update Employee set Department = TRIM(Leading 'Dept.' FROM Department);
참고로 UPDATE 문을 WHERE 절 없이 실행하면 테이블의 모든 행에 일괄 적용되므로, 운영 중인 데이터를 다룰 때는 사전에 백업을 해두거나 WHERE 절로 적용 범위를 제한하는 것이 안전합니다.