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

7 ответов:

The (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

подробнее о регулярном выражении здесь:http://www.tutorialspoint.com/mysql/mysql-regexps.htm

почему бы вам не попробовать регулярное выражение. Попробуйте это так:

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

ваш запрос должен быть SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0

Я понимаю, что вы храните интересы в одном поле таблицы, которое является заблуждением. Вы должны окончательно иметь таблицу "интерес".

Не забывайте использовать скобки, если вы используете эту функцию после AND параметр

такой:

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

Как предложил @Alexis Dufrenoy, запрос может быть:

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

дополнительная информация в руководство.

вы также можете использовать RLIKE Как хорошо.

например:

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