그누보드 인기검색어 이상한 단어 지우기 : 영문만 선택해서, 그 행을 지우려고 하는 mysql delete 구문을 알아봅니다.
작성자 정보
- 삼둡 작성
- 작성일
컨텐츠 정보
- 1,006 조회
- 1 댓글
- 목록
본문
delete FROM g5_popular WHERE pp_word REGEXP '[A-Za-z]'
그누보드를 운영하다보면
이상한 검색어들이 너무나 많아집니다.
봇들이 들어와서 그런지
AI가 들어오는 것인지 정확히는 모르겠습니다.

그래서 주기적으로 이상한 단어들을 검색어에서 지워야 할 상황이 오게 됩니다.
위의 sql 구문이 좋은 방법이 됩니다.
delete FROM g5_popular WHERE pp_word REGEXP '[A-Za-z]'
데이터가 대문자에 속하거나, 소문자에 속하는 것들을 지우는 구문입니다.
비슷한 방법으로 숫자와 한글일부도 선택할 수 있겠습니다.
//내용에 숫자만 있는 경우
SELECT * FROM temp_table WHERE column1 REGEXP '^[0-9]+$';
//내용에 특수문자가 포함된 경우SELECT * FROM temp_table WHERE column1 REGEXP '[`~!#$%^&*|\\'\";:\/?]';
출처: https://jang8584.tistory.com/246 [개발자의 길:티스토리]
delete FROM g5_popular WHERE pp_word REGEXP '^[0-9]+$';
숫자만 있는 검색어 지우기
delete FROM g5_popular WHERE pp_word REGEXP '[`~!#$%^&*|\\'\";:\/?]';
특수문자가 들어간 검색어 지우기
delete FROM g5_popular WHERE pp_word REGEXP '[A-Za-z]'; delete FROM g5_popular WHERE pp_word REGEXP '^[0-9]+$'; delete FROM g5_popular WHERE pp_word REGEXP '[`~!#$%^&*|\\\'\";:\/?]';
mysql 문법에 관한 질문입니다. 데이터에 новости와 같은 러시아 글자가 필요없는 데이터인데, 봇으로 추정되는 무수한 입력시도 때문에, mysql DB에 러시아 데이터가 늘어났습니다. 그 행을 지우려는 mysql delete 구문을 생각하고 있습니다. 러시아 글자가 들어간 행을 다 지우기 위한 mysql delete 구문을 만들어주세요. 해당 필드는 pp_word이고, table의 이름은 g5_popular 입니다
러시아어 문자를 포함하는 행을 삭제하려면 DELETE 문과 정규식을 활용하면 됩니다. MySQL의 REGEXP (또는 RLIKE)를 사용하여 키릴 문자(러시아어 알파벳)를 포함하는 행을 찾고 삭제할 수 있습니다.
sql
DELETE FROM g5_popular
WHERE pp_word REGEXP '[А-Яа-я]';
설명:
- REGEXP '[А-Яа-я]'
- 키릴 문자 범위 (А-Я는 대문자, а-я는 소문자)를 정규식으로 매칭합니다.
- 러시아어가 포함된 행을 찾을 수 있습니다.
- DELETE FROM g5_popular
- 해당하는 데이터를 삭제합니다.
삭제 전에 확인하려면:
바로 삭제하기 전에 어떤 데이터가 삭제될지 확인하려면 SELECT 문으로 먼저 조회하는 것이 좋습니다.
sql
SELECT * FROM g5_popular WHERE pp_word REGEXP '[А-Яа-я]';
위 SELECT 쿼리를 실행한 후, 원하는 데이터가 정확히 조회되는지 확인한 뒤 DELETE를 실행하세요.
추가 보안 조치:
만약 봇이 특정 패턴의 단어(예: 뉴스, 광고, 홍보용 단어 등)를 포함하는 경우라면 추가적인 필터링이 필요할 수 있습니다. 이 경우 OR 조건을 활용하여 여러 패턴을 조합할 수도 있습니다.
sql
DELETE FROM g5_popular WHERE pp_word REGEXP '[А-Яа-я]' OR pp_word LIKE '%реклама%' -- "광고"라는 뜻 OR pp_word LIKE '%новости%'; -- "뉴스"라는 뜻
이렇게 하면 키릴 문자가 포함되거나 특정 단어가 들어간 데이터도 함께 삭제할 수 있습니다.
관련자료
-
이전
-
다음
삼둡님의 댓글
- 삼둡
- 작성일
SELECT * FROM g5_popular
WHERE pp_word REGEXP '^[А-Яа-яЁё]+$';
해결 방법 2: 한글과 키릴 문자를 분리하는 방식
만약 한글을 포함한 데이터도 있을 가능성이 있다면, 한글을 제외하는 방식으로 접근할 수도 있습니다.
sql
복사
편집
SELECT * FROM g5_popular
WHERE pp_word REGEXP '[А-Яа-яЁё]'
AND pp_word NOT REGEXP '[가-힣]';
해결 방법 3: DELETE 실행 시 정확한 키릴 문자만 삭제
이제 삭제할 때도 정확한 키릴 문자만 포함된 행을 삭제할 수 있습니다.
sql
복사
편집
DELETE FROM g5_popular
WHERE pp_word REGEXP '[А-Яа-яЁё]'
AND pp_word NOT REGEXP '[가-힣]';
결론
MySQL의 REGEXP는 가끔 예상치 못한 동작을 할 수 있기 때문에, 정확한 문자 범위를 지정하고 한글을 제외하는 조건을 추가하는 것이 중요합니다.
한글 외에도 영문이나 숫자가 포함된 경우를 제외하고 싶다면 추가적인 조건을 넣을 수도 있습니다.
sql
복사
편집
DELETE FROM g5_popular
WHERE pp_word REGEXP '[А-Яа-яЁё]'
AND pp_word NOT REGEXP '[가-힣a-zA-Z0-9]';
이렇게 하면 키릴 문자만 포함된 행을 안전하게 삭제할 수 있습니다.
더 필요한 조건이 있다면 알려주세요