Forum Webscript.Ru
Общие => Базы данных => Тема начата: Evgeny от 12 Июля 2002, 17:04:49
-
Привет всем.
Базами данных недавно занялся, поэтому прошу прощения, если задаю стандартный или глупый вопрос.
Подскажите пожалуйста, как составить строку sql - запроса, чтобы выбрать все строки данных из таблицы Table1, в которых содержится текст "TEXT-TEXT", независимо от поля.
Т.е. поиск должен осуществляться по всем полям.
Большое спасибо.
-
ну если ты хочешь одним запросом, то
SELECT * FROM table_name
WHERE column1 like \'%TEXT-TEXT%\'
OR cloumn2 like \'%TEXT-TEXT%\' ...
и так все столбцы.
если ты заранее не знаешь какие столбцы в таблице, то тогда 2 запроса
1. знаешь столбцы из таблицы
2. делаешь выборку :)
ПС: тут только вчера обсуждали про поиск по всей базе по всем таблицам, похоже на твое только масштаб покрупнее :)
почитай, я думаю тебе будет тоже полезно
-
Привет. Есть еще один способ, смотри, возможно подойдет.
При создании таблицы укажи параметр \'FULLTEXT(col1,col2,..)\' для текстовых полей, а потом задай поиск \'SELECT * FROM mytable WHERE MATCH (col1,col2,..) AGAINST (\'слово поиска\');\'.
Учти, что если совпадения будут болбше чем в 50% рядков - поиск вернет 0 полей. Это справедливо, иначе сколько б информации пришлось виплюнуть с 1Gb таблици!?
-
Есть еще один способ, смотри, возможно подойдет.
ему надо будет использовать в таком случае полнотекстовый поиск IN BOOLEAN MODE, а для этого создать полнотекстовые индексы на все текстовые поля, что мне кажется совсем не оптимально :(
кроме того, полнотекстовые поиск работает только с полями типа varchar и text, что накладывает существенные ограничения..
ИМХО FULLTEXT здесь далеко не самый лучший вариант.
-
fidget
Есть еще один способ, смотри, возможно подойдет.
А работает быстро?
Быстрее чем ,например ,
"молоко сгущёное"
tovar LIKE \'%молоко%\' AND tovar LIKE \'%сгущёное%\'
///
Я давно уже думаю над вопросом как поисковики (ya, google)
ищут так быстро (до 1 сек.) в 10 и более гиговых базах.
-
Alexandr
это была цитата предыдущего постинга ;)
я просто не очень люблю :)
а насчет полнотекстового поиска...
ну на этапе версий 3.23.ХХ и 4.0.1 для простых запросов, особенно если обычные индексы будут использоваться, то LIKE таки лучше чем полнотекстовый :)
если тебе нужно более расширенные запросы делать (комбинировать несколько LIKE и т.д.), то я думаю есть смысл присмотреться к полнотекстовому :) тем более что в 4.0.2, которая вышла на прошлой неделе было пофиксено много багов из 4.0.1 :) да и индексацию полнотекстовую там кажется улучшать собирались :)
-
Прошу прощения, что поднял эту стаарую тему, просто не хочется новую создавать из-за такой мелочи.
Не подскажет ли кто-нибудь, как в SQL можно игнорировать регистр.
Т.е. для вышеприведенного примера нужно чтобы нашлись, содержащие следующий текст:
Text-text,
TEXT-text, и т.д.
-
а он и так игнорируется.
Если
1. поле не блоб.
2. Настроен чарсет.
-
а он и так игнорируется.
Странно, у меня не игнорируется.
1. Поле по-моему не блоб. Как это можно узнать?
2. Что такое чарсет и как с этим бороться?
-
1. desc table_name
даст тебе описание таблица и типов столбцов, вот и посмотри blob или нет :)
2. character set :)
посмотри в мануал - там написано что это такое :)
в твоем случае это может повлиять, если у тебя стоит какой-нить latin1 , а ты ищешь русские слова...
-
1. desc table_name
Это SQL?
БД у меня - информикс.
Такой код (php) не сработал:
...
$rid=ifx_prepare("desc TABLE_NAME1",$conn_id);
ifx_do($rid);
ifx_htmltbl_result ($rid, "border=\\"1\\"");
ifx_free_result($rid);
...
Что неправильно делаю?
2. character set
посмотри в мануал - там написано что это такое
А где он находится? С удовольствием посмотрел бы.
Русские буквы я не ищу, и character - кирилица здесь точно стоять не может...
До сих пор так и не пойму, в чём дело :(
-
Это mysql :-)
Приношу свои извинения :-)
-
Это mysql :-)
Эот значит, что в информиксе регистр не игнорируется по умолчанию. Или это вообще не имеет отношения к БД, а к SQL?
Ну так как же это "нечто" заставить игнорировать регистр?
-
Это значит, что надо либо подождать специалиста по информиксу или прочесть документацию по нему же.
-
А кто здесь специалист по информиксу и где можно почитать о нём что-нибудь, желательно на русском?
-
http://www.ya.ru - тут точно можно найти.