MySQL의 TRIM() 함수를 사용하려면 원본 문자열에서 제거하고자 하는 문자열이 무엇인지 미리 알고 있어야 합니다. 이것이 TRIM() 함수의 가장 큰 한계점으로, 제거하려는 문자열의 값이 행마다 서로 다른 경우에는 활용하기 어렵습니다. 예를 들어, 여러 문자열의 마지막 두 문자를 잘라내고 싶은데 각 문자열마다 마지막 두 글자가 모두 다르다면 TRIM() 함수로는 일괄 처리할 수 없습니다.
예시
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)
위 테이블에서 Name, Address, Department 컬럼의 마지막 두 문자를 제거한 결과를 얻고 싶다고 가정해 보겠습니다. 그러나 각 행마다 마지막 두 문자가 서로 다르기 때문에 TRIM() 함수를 사용한 단일 쿼리로는 원하는 결과를 얻을 수 없습니다.
문자열 중간의 불필요한 문자는 제거 불가
또 다른 경우로, 문자열 중간에 있는 불필요한 문자를 제거하고 싶을 때도 TRIM() 함수를 사용할 수 없습니다. TRIM() 함수는 오직 문자열의 앞쪽(leading) 또는 뒤쪽(trailing)에 있는 문자만 제거할 수 있기 때문입니다. 예를 들어 위 테이블에서 'Sukhjeet Singh'라는 이름 사이의 공백은 TRIM() 함수로는 제거할 수 없습니다.
대안 방법
이처럼 TRIM() 함수로 처리하기 어려운 경우에는 상황에 맞는 다른 문자열 함수를 활용하는 것이 좋습니다.
- REPLACE(): 문자열 중간에 있는 특정 문자나 공백을 제거하거나 치환할 때 유용합니다.
- SUBSTRING(), LEFT(), RIGHT(): 위치와 길이를 기준으로 문자열을 잘라낼 때 사용할 수 있습니다.
함수의 동작 범위를 정확히 이해하고 적절한 함수를 선택하면 복잡한 문자열 가공 작업도 효율적으로 처리할 수 있습니다.