MySQL Come più valori

Ho questa query MySQL.

Ho campi di database con questo contenuto

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

Perché questa query non funziona? Ho bisogno dei campi con sport o pub o entrambi?

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

La lista (a,b,c) funziona solo con. Per like , devi usare or :

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

Modo più veloce per farlo:

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

è questo:

 WHERE interests REGEXP 'sports|pub' 

Ho trovato questa soluzione qui: http://forums.mysql.com/read.php?10,392332,392950#msg-392950

Ulteriori informazioni su REGEXP qui: http://www.tutorialspoint.com/mysql/mysql-regexps.htm

Perché non provi REGEXP. Provalo in questo modo:

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

La tua query dovrebbe essere SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0

Quello che capisco è che memorizzi gli interessi in un campo della tua tabella, che è un equivoco. Dovresti avere definitivamente una tabella di “interesse”.

Non dimenticare di utilizzare le parentesi se si utilizza questa funzione dopo un parametro AND

Come questo:

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

Come proposto da @Alexis Dufrenoy, la query potrebbe essere:

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

Maggiori informazioni nel manuale .

Puoi anche usare RLIKE .

Per esempio:

 SELECT * FROM TABLE_NAME WHERE COLNAME RLIKE 'REGEX1|REGEX2|REGEX3' 
 $query = mysqli_query($connection, "SELECT * FROM movies_info WHERE movie_genre='".$_REQUEST['genre_type']."'"); 

Ho più generi come azione, avventura, thriller. Ora se ottengo un valore basato su genres.php?genre_type=action – per visualizzare un elenco di film, si mostra perfetto quando db contiene solo un singolo valore come action ma se ha azione, avventura, thriller mostra NULL.