반응형
데이터베이스를 사용하다 보면 데이터 정제가 필요한 경우가 자주 발생합니다. 특히 사용자 입력값이나 외부 데이터에 ①②③④⑤⑥⑦⑧⑨⑩ 같은 불필요한 특수문자가 포함되어 있을 수 있습니다.
이런 특수문자를 검색하고 제거하는 방법을 MySQL 8.0 이상 / 이하 버전으로 나누어 정리해 보겠습니다.
MySQL 8.0 이상 사용 시
MySQL 8.0 이상에서는 정규표현식 함수 REGEXP_REPLACE()와 REGEXP 검색을 사용할 수 있어 훨씬 깔끔하게 처리할 수 있습니다.
1. 특수문자 포함 여부 검색
SELECT * FROM your_table WHERE your_column REGEXP '①|②|③|④|⑤|⑥|⑦|⑧|⑨|⑩';
REGEXP는 해당 정규표현식에 하나라도 일치하면 해당 행을 반환합니다.
2. 특수문자 제거 (REPLACE)
UPDATE your_table SET your_column = REGEXP_REPLACE(your_column, '[①②③④⑤⑥⑦⑧⑨⑩]', '');
REGEXP_REPLACE()는 대괄호([]) 안의 문자 중 하나라도 일치하면 제거합니다.
매우 간단하게 여러 문자를 한 번에 제거할 수 있습니다.
MySQL 8.0 미만 (5.x 등) 사용 시
MySQL 5.x에서는 REGEXP_REPLACE()가 지원되지 않기 때문에, REPLACE() 함수를 중첩해서 사용해야 합니다.
1. 특수문자 포함 여부 검색
SELECT *
FROM your_table
WHERE your_column LIKE '%①%'
OR your_column LIKE '%②%'
OR your_column LIKE '%③%'
OR your_column LIKE '%④%'
OR your_column LIKE '%⑤%'
OR your_column LIKE '%⑥%'
OR your_column LIKE '%⑦%'
OR your_column LIKE '%⑧%'
OR your_column LIKE '%⑨%'
OR your_column LIKE '%⑩%';
LIKE를 사용하면 각 문자별로 일일이 조건을 넣어야 하지만, 모든 버전에서 작동합니다.
2. 특수문자 제거 (REPLACE 중첩)
UPDATE your_table
SET your_column = REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(your_column, '①', ''),
'②', ''),
'③', ''),
'④', ''),
'⑤', ''),
'⑥', ''),
'⑦', ''),
'⑧', ''),
'⑨', ''),
'⑩', '');
반복적이지만 모든 문자 제거가 가능합니다.
여기에 다른 특수문자도 추가해서 처리할 수 있어요.
마무리: 버전에 따라 처리 방법을 나누자
목적MySQL 8.0 이상MySQL 8.0 미만 (5.x 등)
검색 | REGEXP | LIKE 여러 조건 OR 연결 |
문자 제거 | REGEXP_REPLACE() 사용 | REPLACE() 중첩 사용 |
팁: 자주 사용하는 경우 뷰(View)나 저장 프로시저로 관리해 보세요!
불필요한 특수문자는 검색 엔진 최적화, 사용자 경험, 자연어 처리(NLP) 등 다양한 측면에서 부정적인 영향을 줄 수 있습니다.
지속적으로 정제가 필요한 경우, 아래와 같은 방법도 고려해 보세요:
- CLEAN_TEXT() 같은 사용자 정의 함수(UDF)
- 저장 프로시저(Stored Procedure)로 처리 자동화
- 트리거(Trigger)로 삽입 시 자동 제거
반응형
'IT & 개발 > etc' 카테고리의 다른 글
Git에서 'Permission denied' 오류 해결 방법 (0) | 2025.02.19 |
---|---|
윈도우에서 하위 폴더 파일 일괄 이름 변경하는 방법 (1) | 2025.01.29 |
VSCode에서 Flask 애플리케이션 디버깅: 포트 설정 가이드 (0) | 2025.01.08 |
생성형 AI 챗GPT 활용법: 코드 작성 및 디버깅 (3) | 2024.10.07 |
[python] 파이썬 기초 - 웹 스크래퍼 간단 예제 (1) | 2023.11.03 |