Общие > Базы данных
Поиск по всей строке данных.
Evgeny:
Привет всем.
Базами данных недавно занялся, поэтому прошу прощения, если задаю стандартный или глупый вопрос.
Подскажите пожалуйста, как составить строку sql - запроса, чтобы выбрать все строки данных из таблицы Table1, в которых содержится текст "TEXT-TEXT", независимо от поля.
Т.е. поиск должен осуществляться по всем полям.
Большое спасибо.
fidget:
ну если ты хочешь одним запросом, то
SELECT * FROM table_name
WHERE column1 like \'%TEXT-TEXT%\'
OR cloumn2 like \'%TEXT-TEXT%\' ...
и так все столбцы.
если ты заранее не знаешь какие столбцы в таблице, то тогда 2 запроса
1. знаешь столбцы из таблицы
2. делаешь выборку :)
ПС: тут только вчера обсуждали про поиск по всей базе по всем таблицам, похоже на твое только масштаб покрупнее :)
почитай, я думаю тебе будет тоже полезно
Serchey:
Привет. Есть еще один способ, смотри, возможно подойдет.
При создании таблицы укажи параметр \'FULLTEXT(col1,col2,..)\' для текстовых полей, а потом задай поиск \'SELECT * FROM mytable WHERE MATCH (col1,col2,..) AGAINST (\'слово поиска\');\'.
Учти, что если совпадения будут болбше чем в 50% рядков - поиск вернет 0 полей. Это справедливо, иначе сколько б информации пришлось виплюнуть с 1Gb таблици!?
fidget:
Есть еще один способ, смотри, возможно подойдет.
ему надо будет использовать в таком случае полнотекстовый поиск IN BOOLEAN MODE, а для этого создать полнотекстовые индексы на все текстовые поля, что мне кажется совсем не оптимально :(
кроме того, полнотекстовые поиск работает только с полями типа varchar и text, что накладывает существенные ограничения..
ИМХО FULLTEXT здесь далеко не самый лучший вариант.
Alexandr:
fidget
--- Цитировать ---Есть еще один способ, смотри, возможно подойдет.
--- Конец цитаты ---
А работает быстро?
Быстрее чем ,например ,
"молоко сгущёное"
tovar LIKE \'%молоко%\' AND tovar LIKE \'%сгущёное%\'
///
Я давно уже думаю над вопросом как поисковики (ya, google)
ищут так быстро (до 1 сек.) в 10 и более гиговых базах.
Навигация
Перейти к полной версии