복붙노트

[SQL] MySQL을 같이 여러 값

SQL

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%')

해결법

  1. ==============================

    1.(A, B, C) 목록에서만 작동, 당신이 사용하거나 같은 들면 다음과 같습니다.

    (A, B, C) 목록에서만 작동, 당신이 사용하거나 같은 들면 다음과 같습니다.

    WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
    
  2. ==============================

    2.이 일을 빠른 방법 :

    이 일을 빠른 방법 :

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

    이것은이다 :

    WHERE interests REGEXP 'sports|pub'
    

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

    자세한 내용은 여기 정규 표현식에 대해 : http://www.tutorialspoint.com/mysql/mysql-regexps.htm

  3. ==============================

    3.왜 당신은 정규 표현식을보십시오. 이런 식으로 시도 :

    왜 당신은 정규 표현식을보십시오. 이런 식으로 시도 :

    SELECT * FROM table WHERE interests REGEXP 'sports|pub'
    
  4. ==============================

    4.당신은 또한뿐만 아니라 RLIKE를 사용할 수 있습니다.

    당신은 또한뿐만 아니라 RLIKE를 사용할 수 있습니다.

    예를 들면 :

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

    5.조회에 table` 'SELECT * FROM해야 FIND_IN_SET (관심, "스포츠, 술집을")> 0

    조회에 table` 'SELECT * FROM해야 FIND_IN_SET (관심, "스포츠, 술집을")> 0

    내가 이해하면 오해입니다 테이블의 한 필드에서 이익을 저장하는 것입니다. 당신은 확실히에 "관심"테이블이 있어야합니다.

  6. ==============================

    6.당신이 및 매개 변수 다음에이 기능을 사용하는 경우 괄호를 사용하는 것을 잊지 마세요

    당신이 및 매개 변수 다음에이 기능을 사용하는 경우 괄호를 사용하는 것을 잊지 마세요

    이 같이 :

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

    7.@Alexis Dufrenoy 제안처럼 쿼리가 될 수있다 :

    @Alexis Dufrenoy 제안처럼 쿼리가 될 수있다 :

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

    매뉴얼에서 더 많은 정보를 제공합니다.

  8. ==============================

    8.더 많은 작업 예 :

    더 많은 작업 예 :

    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";
    

    이메일 확장이 여러 회사의 도메인과 동일하면 작업은 필터 이벤트 (들)에서 카운트 참가자이었다.

  9. ==============================

    9.아니면 단어의 시작과 일치해야하는 경우 :

    아니면 단어의 시작과 일치해야하는 경우 :

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

    당신은 정규 표현식 캐럿 일치를 사용할 수 있습니다 :

    WHERE interests REGEXP '^sports|^pub'
    

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

  10. from https://stackoverflow.com/questions/4172195/mysql-like-multiple-values by cc-by-sa and MIT license