programing

MySQL Like 다중값

javaba 2023. 1. 29. 20:29
반응형

MySQL Like 다중값

MySQL 쿼리가 있습니다.

이 내용을 포함하는 데이터베이스 필드가 있습니다.

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

이 같은 쿼리가 작동하지 않는 이유는 무엇입니까?스포츠나 술집, 둘 다 있는 필드가 필요해요?

SELECT * FROM table WHERE interests LIKE ('%sports%', '%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://http://www.tutorialspoint.com/mysql/mysql-regexps.htm 를 참조해 주세요.

(a,b,c)와만 연동되는 목록in.위해서like, 를 사용해야 합니다.or:

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

REGEXP를 시도해 보는 건 어때?다음과 같이 시도해 보십시오.

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

를 사용할 수도 있습니다.REGEXP의 동의어RLIKE뿐만 아니라.

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

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

이 기능을 사용할 경우 다음 중 괄호를 사용하는 것을 잊지 마십시오.AND파라미터

다음과 같이 합니다.

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

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

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

regexp carlet matches를 사용할 수 있습니다.

WHERE interests REGEXP '^sports|^pub'

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

질의는 다음과 같습니다.SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0

내가 이해한 것은 당신이 관심을 테이블의 한 분야에 저장한다는 것인데, 그것은 잘못된 생각이다."관심" 표는 반드시 있어야 합니다.

@Alexis Dufrenoy가 제안한 것과 마찬가지로 다음과 같은 쿼리를 할 수 있습니다.

SELECT * FROM `table` WHERE find_in_set('sports', interests)>0 OR find_in_set('pub', interests)>0

자세한 내용은 매뉴얼을 참조하십시오.

기타 작업 예:

SELECT COUNT(email) as count FROM table1 t1 
JOIN (
      SELECT company_domains as emailext FROM table2 WHERE company = 'DELL'
     ) t2 
ON t1.email LIKE CONCAT('%', emailext) WHERE t1.event='PC Global Conference";

전자 메일 확장자가 여러 회사 도메인과 동일한 경우 필터가 있는 이벤트의 참가자 수를 카운트하는 작업입니다.

언급URL : https://stackoverflow.com/questions/4172195/mysql-like-multiple-values

반응형