Ответ 1
Два варианта:
-
Используйте ключевое слово
LIKE
, а также знаки процента в строкеselect * from table where field like '%a%' or field like '%b%'.
(примечание: если ваша строка поиска содержит знаки процента, вам нужно их избежать)
-
Если вы ищете более сложную комбинацию строк, чем вы указали в своем примере, вы можете использовать регулярные выражения (regex):
Подробнее о том, как их использовать, см. в руководстве по MySQL: http://dev.mysql.com/doc/refman/5.1/en/regexp.html
Из них использование LIKE
является самым обычным решением - стандартным SQL и общим. Regex реже используется, но гораздо более мощный.
Обратите внимание, что независимо от того, какой вариант вы используете, вам необходимо знать о возможных последствиях для производительности. Поиск таких подстрок будет означать, что запрос должен будет сканировать всю таблицу. Если у вас большая таблица, это может привести к очень медленному запросу, и никакая индексация не поможет.
Если это проблема для вас, и вам придется искать одни и те же вещи снова и снова, вы можете сделать что-то вроде добавления поля флага в таблицу, которое указывает, что поле строки содержит соответствующие подстроки. Если вы сохраните этот флаг в обновленном состоянии, когда вы вставляете обновление в запись, вы можете просто запросить флаг, когда хотите выполнить поиск. Это можно проиндексировать и сделать ваш запрос намного быстрее. Стоит ли это делать, это зависит от вас, это будет зависеть от того, насколько плохо работает производительность LIKE
.