Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Неверный результат выполнения запроса [D6, MySQL]


pasha_golub ©   (2003-04-09 18:18:00) 

БД:MySQL 4.0.12 под Win98
Запрос:select m_subject from main where m_subject like "%ваз%"
Результат:

ВАЗ-2108 90г.в., 1,5л, КПП 5-ступ., длин. крыло, цв. серо-гол. - 2450у.е.;

М-2140 83г.в., газ. устан. - 450у.е.;
...

Блин, но записи с М-2140 не должно выдавать, а таких еще там куча
:-(


pasha_golub   (2003-04-10 18:32:00) [1]

>Rol
НЕ ЗНАЮ! :-(


Rol   (2003-04-10 14:39:00) [2]

>pasha_golub
А зачем нужен CONTAINING?


fidget   (2003-04-10 14:09:00) [3]

> У меня таблицы InnoDB, мне пользоваться myisamchk или чем другим?

для InnoDB подобных утилиток пока нет ;(
если нужно перестроить индексы, тогда дамп таблицы, прибить ее и восстановить.
Или перевести ее в MyISAM, сделать все что надо, а затем в InnoDB снова.


Johnmen   (2003-04-10 14:07:00) [4]

>...fidget нащупал

Правильней нащупал а:)
Ведь это же дивчина !
;^))))))))




pasha_golub   (2003-04-10 13:57:00) [5]

Спасибо, всем. Совет fidgeta помог.

>fidget
У меня таблицы InnoDB, мне пользоваться myisamchk или чем другим?


pasha_golub   (2003-04-10 13:20:00) [6]

>Johnmen
Да много их, я думаю fidget нащупал откуда ноги растут :-))


Johnmen   (2003-04-10 13:13:00) [7]

А какие не попали в выборку ? Пример...


fidget   (2003-04-10 13:13:00) [8]

у тебя кодировка установленная на сервере и кодировка в которой хранятся данные отличаются, потому у тебя будет хровать не только поиск, но и сортировка.

указываешь в my.cnf
[mysql]
default-character-set=koi8_ru[или win1251]

в зависимости от того в какой кодировке данные в базе.
возможно придется перестроить индексы запустив
myisamchk -rq --set-character-set=charset


pasha_golub   (2003-04-10 13:11:00) [9]

Переменной default_character_set не обнаружил.

Вместо нее нашел такие
character_set = latin1
chracter_sets = много всяких локалей :-))


pasha_golub   (2003-04-10 13:05:00) [10]

Ага, ну да, это я так, херней страдаю :-)

Повторяю:
select m_subject from main where m_subject like "%ваз%"

Результат:
select m_subject from main where m_subject like "%ваз%"

m_subject
ВАЗ-2108 90г.в., 1,5л, КПП 5-ступ., длин. крыло, цв. серо-гол. - 2450у.е.
М-2140 83г.в., газ. устан. - 450у.е.
"Опель-Омега" 87г.в., газ-бензин, эл.стекла и зерк., г/у - 2500у.е., или обм.
ВАЗ-21013 85г.в., цв. "рубин", кузов с консерв. - 1300у.е.
ГАЗ-31029 94г.в., в хор. сост.
ВАЗ-2105, цв. бел., 1,5л, КПП 5-ступ., пробег 50тыс.км
ВАЗ-21099 93г.в., из Германии 3.07.2001г, отл. сост.
ВАЗ-21043 92г.в., идеальн. сост.
ГАЗель 99г.в., борт., метан
ВАЗ-21063 92г.в., цв. бел., 1,3л - 1700у.е.
"Фольксваген-Гольф", 90г.в., Mul-T-Lock, ц/з, газ. установка, тит. диски
ВАЗ-2102 84г.в., в отл. состоянии
ВАЗ-2101 81г.в., в отл. сост. - 1200у.е., торг уместен или обм.

и т.д.


Johnmen   (2003-04-10 13:00:00) [11]

По сути вопроса :
Приведенный запрос корректен. Если выкидывает то, что приведено, то м.б. не приведен реальный запрос :)
И нужны подробности...


pasha_golub   (2003-04-10 12:55:00) [12]

>Rol
Абсолютно не правильно. Синтаксис LIKE стандартизирован был еще наверное, когда лежа писался. Так что не должно быть этого...
Ваше замечание правильно для запроса вида ... like "%в%а%з%" :-)

>NAlexey
Не понимаю, что это изменит. Но все равно попробовал - результат тот же самый :-(

>Johnmen
Это ж Украина, при том не крупный город, но если б ты у нас цены на жилье видел :-))


pasha_golub   (2003-04-10 12:48:00) [13]

>fidget
Поподробней, плз, а то я как-то этим еще не сталкивался. Но мне кажется, дело именно в этом...


fidget   (2003-04-10 12:42:00) [14]

pasha_golub, локаль настрой.
default-character-set


NAlexey   (2003-04-10 10:37:00) [15]

>Ну и всё верно - он нашёл буквы в, а, з в оговоренной Вами последовательности. Не результаты неверные, а запрос. :)
Не буду категорично утверждать, но если синтаксис MySQL похож на MSSQL то не должно такого быть. Попробуй результат должен возвращать строки где встречается именно "ваз". Попробуй сделать такой запрос: select LTrim(RTrim(m_subject)) from main where m_subject like "%ваз%"может поможет.


Rol   (2003-04-10 07:23:00) [16]

Ну и всё верно - он нашёл буквы в, а, з в оговоренной Вами последовательности. Не результаты неверные, а запрос. :)


Johnmen   (2003-04-09 21:46:00) [17]

Ни хрена себе какие у вас цены на подержанные тачанки !!!
:)))))))))))))))

Странно, что и восьмерку выдает !


Наверх

Титульная страница Поиск, карта сайта Написать письмо