[mysql] 여러 값과 같은 MySQL

이 MySQL 쿼리가 있습니다.

이 내용의 데이터베이스 필드가 있습니다

sports,shopping,pool,pc,games 
shopping,pool,pc,games 
sports,pub,swimming, pool, pc, games   

쿼리와 같은 기능이 작동하지 않는 이유는 무엇입니까? 스포츠 나 펍 또는 둘 다가있는 필드가 필요합니까?

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')



답변

(a,b,c)목록은에서만 작동합니다 in. 의 경우 다음 like을 사용해야합니다 or.

WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'


답변

더 빠른 방법 :

WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'

이것입니다 :

WHERE interests REGEXP 'sports|pub'

이 솔루션을 여기에서 찾았습니다 : http://forums.mysql.com/read.php?10,392332,392950#msg-392950

REGEXP에 대한 자세한 내용은 여기 ( http://www.tutorialspoint.com/mysql/mysql-regexps.htm)를 참조 하십시오.


답변

REGEXP를 사용해보십시오. 다음과 같이 시도하십시오.

SELECT * FROM table WHERE interests REGEXP 'sports|pub'


답변

사용할 수도 있습니다 RLIKE.

예를 들면 다음과 같습니다.

SELECT * FROM TABLE_NAME WHERE COLNAME RLIKE 'REGEX1|REGEX2|REGEX3'


답변

귀하의 검색어는 SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0

내가 이해하는 것은 테이블의 한 필드에 관심사를 저장한다는 것입니다. 이것은 오해입니다. 확실하게 “관심”테이블이 있어야합니다.


답변

AND매개 변수 뒤에이 함수를 사용하는 경우 괄호를 사용하는 것을 잊지 마십시오

이처럼 :

WHERE id=123 and(interests LIKE '%sports%' OR interests LIKE '%pub%')


답변

또는 단어의 시작 부분 만 일치시켜야하는 경우 :

WHERE interests LIKE 'sports%' OR interests LIKE 'pub%'

정규 표현식 캐럿 일치를 사용할 수 있습니다.

WHERE interests REGEXP '^sports|^pub'

https://www.regular-expressions.info/anchors.html