새소식

Database/MySQL

[MySQL] 특정 단어 검색 (LIKE)

  • -

 

특정 단어 검색 (LIKE)

▮ %

 

카테고리가 로그라이크 장르인 게임들만 출력하고 싶다. (액션 로그라이크도 포함해서)

LIKE 뒤에 검색어를 적으면 그 글자만 정확히 들어있는 행만 찾아주기 때문에 

와일드카드인 %를 붙여주어야 한다. (%는 아무 글자를 의미한다고 보면 된다.)

SELECT * FROM steam.game WHERE 카테고리 LIKE "%로그라이크%";

 

 

카테고리에 로그라이크가 들어있거나 RPG가 들어있는 게임들만 출력하고 싶다.

SELECT * FROM steam.game WHERE 카테고리 LIKE "%로그라이크%" OR 카테고리 LIKE "%RPG%";

 

▮ _

 

"_" "%"처럼 아무 글자를 의미하는데 차이점이 있다면

  • % : 아무 글자 0자부터 무한개까지를 의미
  • _ : 아무 글자 딱 1자를 의미
SELECT * FROM steam.game WHERE 카테고리 LIKE "__ 로그라이크"

 

 

▮ %의 문제점

 

  • index를 활용할 수 없음
  • %, LIKE등은 VARCHAR() 컬럼에 주로 사용하며, CHAR 컬럼에 사용할 때는 주의해야함
    • CHAR(6)으로 설정해놓았다면 총 6자를 저장할 수 있다는 것인데
      "액션RPG"이라는 글자를 저장하면 "액 션 R P G _"라고 뒤에 남은 공간 1글자를 공백으로 채워서 저장해줌
       그렇게되면 "%RPG"라고 검색을 해도 찾을 수가 없음

 

728x90
Contents