Могу ли я использовать подстановочные знаки в инструкции "IN" MySQL?
Я хотел бы запустить что-то вроде:
select * from table where field in ("%apple%", "%orange%")
Есть ли способ? Или, по крайней мере, есть лучший способ, чем динамическое построение запроса для каждого ключевого слова:
select * from table where field like "%apple%" or field like "%orange%"
Спасибо.
Ответы
Ответ 1
Я не уверен, что это лучше, чем вы придумали, но вы можете использовать возможности MySQL regex:
select * from my_table where field rlike 'apple|orange';
Кроме того, как отмечали другие, вы можете использовать возможности полнотекстового поиска MySQL (но только если вы используете движок MyISAM).
Ответ 2
Вероятно, вам стоит посмотреть полнотекстовое индексирование MySQL, если это то, что вы пытаетесь сделать.
Ответ 3
Возможно, лучшим решением было бы использовать логический поиск по полнотекстовому индексу?
EDIT: я просмотрел его, и он поддерживает только подстановочные знаки в конце слов:
ALTER TABLE table ADD FULLTEXT INDEX (field);
SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);
Ответ 4
В Oracle вы можете:
select * from table where
regexp_like (column, 'apple|orange', 'i')
Вы можете использовать более сложное регулярное выражение. "I" делает его нечувствительным.
См. Документы Oracle