답변:
더 빠른 방법 :
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)를 참조 하십시오.
(select group_concat(myColumn separator '|') from..)
REGEXP를 사용해보십시오. 다음과 같이 시도하십시오.
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
SELECT * FROM table WHERE interests NOT REGEXP 'sports|pub'
(> ‿◠) ✌
jazkat
5 년 전에 제출 된 답변과 다른 점은 무엇입니까?
사용할 수도 있습니다 RLIKE
.
예를 들면 다음과 같습니다.
SELECT * FROM TABLE_NAME WHERE COLNAME RLIKE 'REGEX1|REGEX2|REGEX3'
귀하의 검색어는 SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
내가 이해하는 것은 테이블의 한 필드에 관심사를 저장한다는 것입니다. 이것은 오해입니다. 확실하게 "관심"테이블이 있어야합니다.
SELECT * FROM table WHERE find_in_set(interests, 'sports,pub')
하지만,이 기술은 대부분의 상황에서 정규 표현식보다 성능이 뛰어납니다.
또는 단어의 시작 부분 만 일치시켜야하는 경우 :
WHERE interests LIKE 'sports%' OR interests LIKE 'pub%'
정규 표현식 캐럿 일치를 사용할 수 있습니다.
WHERE interests REGEXP '^sports|^pub'
@Alexis Dufrenoy가 제안한 것처럼 쿼리는 다음과 같습니다.
SELECT * FROM `table` WHERE find_in_set('sports', interests)>0 OR find_in_set('pub', interests)>0
매뉴얼의 추가 정보 .