이 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'
