DB

[MySQL] 문자열 공백 제거 함수: TRIM, LTRIM, RTRIM 비교

인생아 2025. 7. 19. 15:48
반응형

사용자 입력값이나 텍스트 데이터를 다룰 때 앞뒤에 붙은 불필요한 공백은 종종 문제를 일으킨다.
특히 JOIN이나 WHERE 절 조건에서 공백이 숨어 있으면 값이 일치하지 않아 오류로 이어지기도 한다.
이런 문제를 해결하기 위해 MySQL은 공백 제거용 함수들을 제공한다: TRIM(), LTRIM(), RTRIM()

🧽 TRIM(): 양쪽 공백 제거

문법

TRIM([LEADING|TRAILING|BOTH] trim_str FROM str)
-- 또는 단순히 공백 제거 시
TRIM(str)

공백뿐 아니라 특정 문자도 제거할 수 있다.
가장 많이 쓰는 형태는 TRIM(str)로, 문자열 앞뒤 공백을 동시에 제거한다.

예제

SELECT TRIM('   hello   ');                 -- 결과: 'hello'
SELECT TRIM(BOTH 'x' FROM 'xxhelloxx');     -- 결과: 'hello'
SELECT TRIM(LEADING 'x' FROM 'xxhellox');   -- 결과: 'hellox'
SELECT TRIM(TRAILING 'x' FROM 'helloxx');   -- 결과: 'hello'

실무에서는 대부분 TRIM() 단독으로 사용해 공백 제거용으로 쓰인다.

반응형

🔸 LTRIM(): 왼쪽 공백 제거

문법

LTRIM(str)

문자열의 **왼쪽(시작 부분)**에 붙은 공백만 제거한다.

예제

SELECT LTRIM('   hello world');   -- 결과: 'hello world'

🔸 RTRIM(): 오른쪽 공백 제거

문법

RTRIM(str)

문자열의 **오른쪽(끝 부분)**에 붙은 공백만 제거한다.

예제

SELECT RTRIM('hello world   ');   -- 결과: 'hello world'

LTRIM과 RTRIM은 부분적으로만 공백을 다뤄야 할 때 유용하다.

🧠 세 함수 비교 요약

함수명 제거 방향 사용 예시 주요 용도
TRIM 양쪽 TRIM(' abc ') → 'abc' 전체 공백 제거
LTRIM 왼쪽만 LTRIM(' abc') → 'abc' 앞쪽 공백만 제거
RTRIM 오른쪽만 RTRIM('abc ') → 'abc' 뒷쪽 공백만 제거
반응형

⚠️ 주의사항

  • 공백이 아닌 특정 문자 제거 시에는 TRIM('문자' FROM 문자열) 형식을 써야 한다.
  • 공백이 아닌 문자를 제거할 때도 방향 지정 가능
  • NULL 입력 시 결과는 NULL

예외

SELECT TRIM(NULL);     -- 결과: NULL
SELECT LTRIM(NULL);    -- 결과: NULL

🛠️ 실무 예제

1. 사용자 이름 입력값 정리

SELECT TRIM(user_name) FROM users;

2. 주소 정보에서 특정 기호 제거

SELECT TRIM(',' FROM address) FROM customer_info;

3. 입력 전처리 후 비교

-- 공백 있는 이름과 공백 없는 이름 비교
SELECT * FROM users
WHERE TRIM(user_name) = '홍길동';

4. 데이터 적재 전 후처리

-- 로딩 전 데이터 정리
UPDATE temp_table
SET col1 = TRIM(col1),
    col2 = TRIM(col2);

🧩 보완 팁

  • 데이터가 외부에서 유입되는 경우 공백이 포함될 확률이 높다.
  • 특히 CSV, Excel, 사용자 입력 등에서 앞뒤 공백은 매우 흔하다.
  • 정규화를 위해 INSERT, UPDATE 전에 TRIM() 적용하는 습관이 중요하다.

🔗 참고 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

 

반응형