DB

[MySQL] 문자열 치환 함수: REPLACE 실무 활용법

인생아 2025. 7. 19. 13:41
반응형

데이터 안에 포함된 특정 단어나 문자를 다른 값으로 바꾸고 싶을 때 가장 간단하고 강력한 도구가 REPLACE() 함수다.
문자열 치환, 잘못된 입력 수정, 정규 포맷 일괄 정리 등에 실무에서 자주 활용된다.

🧩 REPLACE() 함수 기본 문법

REPLACE(str, from_str, to_str)
  • str: 원본 문자열
  • from_str: 찾아서 바꿀 대상
  • to_str: 새로 바꿀 문자열

from_str이 여러 번 등장하면 모두 한꺼번에 치환된다.

🔹 기본 예제

SELECT REPLACE('Hello World', 'World', 'MySQL'); -- 결과: 'Hello MySQL'
SELECT REPLACE('2025/07/18', '/', '-')            -- 결과: '2025-07-18'

특정 기호나 구분자 변경, 오타 수정, 문자열 구성 조정 등에 매우 유용하다.

반응형

🧪 실무 응용 예제

-- 전화번호에서 '-' 제거
SELECT REPLACE(phone, '-', '') AS phone_cleaned
FROM users;

-- 게시글 내용에서 금칙어를 별표 처리
SELECT REPLACE(content, '욕설', '**') AS filtered_content
FROM board;
-- HTML 태그 치환 (예: <br> → 줄바꿈 문자)
SELECT REPLACE(comment, '<br>', '\n') AS text_comment
FROM replies;

REPLACE()는 정규표현식이 아닌 단순 문자열 치환 방식이라, 정확한 문자열 일치가 필요하다.
패턴 기반으로 치환하려면 REGEXP_REPLACE()를 사용해야 한다.

🔸 NULL 처리 주의사항

SELECT REPLACE(NULL, 'a', 'b'); -- 결과: NULL
SELECT REPLACE('abc', NULL, 'b'); -- 결과: NULL
  • 세 인자 중 하나라도 NULL이면 결과는 무조건 NULL이다.
  • 실무에서는 IFNULL() 또는 COALESCE()로 NULL 방어를 해주는 것이 안전하다.
SELECT REPLACE(IFNULL(username, ''), 'admin_', '') FROM users;

🧠 실무에서 자주 쓰는 패턴

1. 포맷 통일화

-- 전화번호 구분자 '-' → 공백
SELECT REPLACE(phone, '-', ' ') FROM contacts;

2. 잘못 입력된 단어 정리

-- 제품명이 잘못 입력된 경우 보정
SELECT REPLACE(product_name, '갤럭시S25', '갤럭시S24') FROM products;
반응형

3. 문자열 조합 후 후처리

-- CONCAT 결과에서 특수기호 제거
SELECT REPLACE(CONCAT(title, ' - ', category), '&', 'and') FROM articles;

4. 저장된 URL 수정

-- 도메인 변경 (http → https)
UPDATE links
SET url = REPLACE(url, 'http://', 'https://')
WHERE url LIKE 'http://%';

💡 보완 팁: 중복 치환 방지

여러 번 치환할 경우, 중첩되면 원하지 않는 결과가 나올 수 있다.

-- 'aa' → 'a' 로 치환 시 주의
SELECT REPLACE('aaaa', 'aa', 'a'); -- 결과: 'aa' (2번 적용됨)

단계를 나누어 적용하거나, WHERE 조건으로 최소화하는 것이 안전하다.

🔚 마무리 요약

  • REPLACE()는 간단하고 빠르게 문자열을 바꿀 수 있는 함수
  • 치환 대상이 정확히 일치해야 작동
  • NULL 처리, 중복 치환, 특수문자 주의 필요
  • 실무에서는 전화번호, 주소, 오타 보정, 금칙어 필터 등에 자주 사용됨

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

반응형