자유게시판

그누보드 인기검색어 이상한 단어 지우기 : 영문만 선택해서, 그 행을 지우려고 하는 mysql delete 구문을 알아봅니다.

작성자 정보

  • 삼둡 작성
  • 작성일

컨텐츠 정보

본문

delete FROM g5_popular WHERE pp_word REGEXP '[A-Za-z]'

 

그누보드를 운영하다보면

이상한 검색어들이 너무나 많아집니다.

 

봇들이 들어와서 그런지

AI가 들어오는 것인지 정확히는 모르겠습니다.

bf528d4f79a00fef8e434b0c1ae989b7e3036f4br0wh.png

 

그래서 주기적으로 이상한 단어들을 검색어에서 지워야 할 상황이 오게 됩니다.

 

위의 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 '%новости%'; -- "뉴스"라는 뜻

이렇게 하면 키릴 문자가 포함되거나 특정 단어가 들어간 데이터도 함께 삭제할 수 있습니다.

 

관련자료

댓글 1

삼둡님의 댓글

  • 삼둡
  • 작성일
위와 같은 구문으로 "SELECT * FROM g5_popular WHERE pp_word REGEXP '[А-Яа-я]';" 이것을 실행했더니 키릴문자만 나오는 것이 아니라 한글도 같이 나옵니다. 이것은 오류라고 생각합니다. 대책을 세워봐요


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]';
이렇게 하면 키릴 문자만 포함된 행을 안전하게 삭제할 수 있습니다.
더 필요한 조건이 있다면 알려주세요

인기검색어


최근글


새댓글