본문 바로가기

IT & 개발/etc

MySQL에서 특수문자(①~⑩) 검색 및 제거하는 방법 (버전별 정리)

반응형

데이터베이스를 사용하다 보면 데이터 정제가 필요한 경우가 자주 발생합니다. 특히 사용자 입력값이나 외부 데이터에 ①②③④⑤⑥⑦⑧⑨⑩ 같은 불필요한 특수문자가 포함되어 있을 수 있습니다.

이런 특수문자를 검색하고 제거하는 방법을 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)로 삽입 시 자동 제거
반응형