Могу ли я использовать подстановочные знаки в операторе MySQL “IN”?

StackOverflow https://stackoverflow.com/questions/1652318

  •  22-07-2019
  •  | 
  •  

Вопрос

Я хотел бы запустить что-то вроде:

select * from table where field in ("%apple%", "%orange%")

Есть ли какой-то способ?Или, по крайней мере, есть ли лучший способ, чем динамическое построение запроса для каждого ключевого слова:

select * from table where field like "%apple%" or field like "%orange%"

Спасибо.

Это было полезно?

Решение

Я не уверен, что это лучше того, что вы придумали, но вы могли бы использовать Возможности регулярных выражений MySQL:

select * from my_table where field rlike 'apple|orange';

Кроме того, как упоминали другие, вы могли бы использовать Полнотекстовый поиск в MySQL возможности (но только если вы используете движок MyISAM).

Другие советы

Вам, вероятно, следует взглянуть на Полнотекстовое индексирование MySQL, если это то, что вы пытаетесь сделать.

Возможно, лучшим решением было бы использовать логический поиск по полнотекстовому индексу?

Редактировать:Я просмотрел его, и он поддерживает только подстановочные знаки на конец из слов:

ALTER TABLE table ADD FULLTEXT INDEX (field);

SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);

В Oracle вы можете сделать:

select * from table where
regexp_like (column, 'apple|orange', 'i')

Вы можете использовать более сложное регулярное выражение."Я" делает это нечувствительным.Видишь Документы Oracle docs

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top