Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL TRIM() 함수를 사용할 수 없는 경우는 언제일까?

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(): 위치와 길이를 기준으로 문자열을 잘라낼 때 사용할 수 있습니다.

함수의 동작 범위를 정확히 이해하고 적절한 함수를 선택하면 복잡한 문자열 가공 작업도 효율적으로 처리할 수 있습니다.