Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

Проблема с запросом SELECT FROM WHERE LIKE   Найти похожие ветки 

 
Antah   (2002-12-17 13:56) [0]

Чудеса какие-то. Ничего не понимаю, и никто не может помочь.
Полный бред с 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, отрабатывается абсолютно корректно.

Кто-нибудь верит в чудеса?


 
Johnmen ©   (2002-12-17 14:06) [1]

Все отлично рассказал ! Только забыл указать движок для БД...:)))
И, кстати, а с другими буквами нормально ?
А то есть сильное подозрение...:)))


 
Карелин Артем ©   (2002-12-17 15:28) [2]

Johnmen © (17.12.02 14:06)
Есть простая проиндексированная таблица формата Paradox DB (30000 записей) с одним полем (тип A, имя "word")


 
ЮЮ ©   (2002-12-18 04:06) [3]

Очевидно, TQuery делает предварительный разбор SQL предложения (например, он поддерживает параметры), в результате которого LIKE "Я_" преобразуется в LIKE "Я%", отсюда и разные результаты



 
ЮЮ ©   (2002-12-18 04:08) [4]

Попробуй часть после LIKE передавать параметром, т.е. уже после обработки текста запроса



Страницы: 1 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
1-37141
BlackSun
2002-12-29 11:17
2003.01.13
Перетаскивание формы


7-37401
Keplin Sergey
2002-11-01 20:10
2003.01.13
Читать CD-ROM напрямую...


3-36991
Rust1970
2002-12-17 15:26
2003.01.13
как через ADO вызвать хрпроцедуру, которая пишет в BLOB (oracle)


1-37106
Шишкин Илья
2003-01-04 11:30
2003.01.13
Работа со String


1-37210
delfer.ru
2002-12-31 05:20
2003.01.13
У меня вопрос?????????????????