Я хочу написать запрос, чтобы выбрать из таблицы все строки со словом «piggy» в столбце «Описание».MySQL проверяет, сколько раз в ячейке таблицы появляется слово
SELECT * FROM table WHERE ...?
Спасибо!
Я хочу написать запрос, чтобы выбрать из таблицы все строки со словом «piggy» в столбце «Описание».MySQL проверяет, сколько раз в ячейке таблицы появляется слово
SELECT * FROM table WHERE ...?
Спасибо!
В MySQL %
дикие карты. Вы не используете wild-cards с оператором =
, но с оператором LIKE
.
SELECT * FROM table WHERE `Description` LIKE "%piggy%"
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
select * from table where description like '%piggy%'
будет выбирать и возвращать все строки, где слово piggy является частью значения столбца. Если вы хотите, чтобы подсчитать, сколько строк тогда:
select count(*) from table where description like '%piggy%'
select * from table where description like '%piggy%'
Как уже упоминалось несколько раз вам нужен LIKE
запрос для этого. Я бы только предупредил, что это будет ужасно медленным в случае таблицы InnoDB
, поскольку она не поддерживает полнотекстовое сканирование. Если вам нужна более высокая производительность с помощью LIKE
, вы должны использовать MyISAM
.
В любом случае, если вы хотите внедрить поисковую систему, лучше изучите существующие API. Я не знаю, какой язык программирования вы используете, но если бы это была Java, я бы рекомендовал Apache Lucene.
Не только в MySQL: это стандартная нотация SQL (как в стандарте ISO/IEC 9075-2: 2003). –