![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с запросом SELECT FROM WHERE LIKE [D3, Paradox]
Antah © (2002-12-17 13:56:00)Чудеса какие-то. Ничего не понимаю, и никто не может помочь.
Полный бред с SQL-запросом c использованием оператора LIKE.
Есть компьютер, Win98, Delphi 3 Client-server suite.
Есть простая проиндексированная таблица формата Paradox DB (30000 записей) с одним полем (тип A, имя "word"). В таблице - русские слова (орфографический словарик). В программе формируется запрос к таблице (разными способами, вплоть до ручного ввода через edit-поле, специально сделал на форме для тестирования) и выводится результат запроса.
Следующие запросы отрабатываются абсолютно корректно:
1. SELECT WORD FROM DB_NAME WHERE WORD LIKE "_Я"
Результат - все слова из двух букв, оканчивающиеся на "Я".
2. SELECT WORD FROM DB_NAME WHERE WORD LIKE "Я%"
Результат - все слова, начинающиеся на "Я".
3. SELECT WORD FROM DB_NAME WHERE WORD LIKE "Я__"
Результат - все слова из трех букв, оканчивающиеся на "Я".
4. SELECT WORD FROM DB_NAME WHERE WORD LIKE "_Я_"
Результат - все слова из трех букв, с буквой "Я" в середине.
Далее - чудо. Запрос, который меня лишил сна на пять дней:
5. SELECT WORD FROM DB_NAME WHERE WORD LIKE "Я_"
Результатом почему-то вместо ожидаемого набора двухбуквенных слов, начинающихся с буквы "Я", вываливаются ВСЕ слова, начинающиеся с этой буквы. То есть результат получается аналогичным результату запроса № 2.
Для справки:
1. Этот же эапрос к этой же таблице на этом же компьютере, будучи запущенным из программы Database Desktop 7 пакета Delphi 3 Client-server suite, отрабатывается абсолютно корректно.
2. Этот же эапрос к этой же таблице на этом же компьютере, будучи запущенным из пакета Borland Paradox 4.0, отрабатывается абсолютно корректно.
Кто-нибудь верит в чудеса?
ЮЮ (2002-12-18 04:08:00) [1]Попробуй часть после LIKE передавать параметром, т.е. уже после обработки текста запроса
ЮЮ (2002-12-18 04:06:00) [2]Очевидно, TQuery делает предварительный разбор SQL предложения (например, он поддерживает параметры), в результате которого LIKE "Я_" преобразуется в LIKE "Я%", отсюда и разные результаты
Карелин Артем (2002-12-17 15:28:00) [3]Johnmen © (17.12.02 14:06)
Есть простая проиндексированная таблица формата Paradox DB (30000 записей) с одним полем (тип A, имя "word")
Johnmen (2002-12-17 14:06:00) [4]Все отлично рассказал ! Только забыл указать движок для БД...:)))
И, кстати, а с другими буквами нормально ?
А то есть сильное подозрение...:)))