У меня есть этот запрос MySQL.
У меня есть поля базы данных с этим содержимым
sports,shopping,pool,pc,games
shopping,pool,pc,games
sports,pub,swimming, pool, pc, games
Почему этот запрос не работает? Мне нужны поля со спортом или пабом или с обоими?
SELECT * FROM table WHERE interests LIKE ('%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 NOT REGEXP 'sports|pub'
(> ‿◠) ✌jazkat
ответа, представленного за 5 лет до вашего?Вы также можете использовать
RLIKE
.Например:
источник
Ваш запрос должен быть
SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
Что я понимаю, так это то, что вы храните интересы в одной области таблицы, что является заблуждением. У вас обязательно должна быть таблица «процентов».
источник
SELECT * FROM table WHERE find_in_set(interests, 'sports,pub')
, но этот метод, вероятно, превзойдет регулярное выражение в большинстве ситуаций.Не забудьте использовать скобки, если вы используете эту функцию после
AND
параметраКак это:
источник
Или, если вам нужно сопоставить только начало слов:
Вы можете использовать регулярные выражения:
https://www.regular-expressions.info/anchors.html
источник
Как предложил @Alexis Dufrenoy, запрос может быть следующим:
Более подробная информация в руководстве .
источник
Больше примеров работы:
Задача состояла в том, чтобы подсчитать участников в событии (ях) с фильтром, если расширение электронной почты равно нескольким доменам компании.
источник