Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Создание поискового SQL запроса |
Автор: PaWeLL 4.12.2009, 17:46 | ||
Необходимо организовать поиск по таблице сотрудников по поле фамилия. Причем искать должно не только по полной фамилии, но и по её части. Запрос такой:
а - содержимое поля для поиска. Запрос работает но не полностью. Он выводит результат только если запрашиваемая фамилия введена полностью и с большой буквы. Если ввести часть фамилии или с маленькой буквы, то результат пустой. Подскажите пожалуйста правильный запрос. |
Автор: jcyber 4.12.2009, 17:56 |
Реализация на SQL зависил от БД. Но логика такая, что нужно передавать строку "а" состоящая только из строчных букв, а поле таблицы, по которой происходит поиск нужно тоже перевести в нижний регистр. |
Автор: ТоляМБА 4.12.2009, 17:57 |
PaWeLL, начни с приведения к одному регистру: в коде делфи вместо 'a' напиши AnsiUpperCase(a) в SQL коде вместо where Surname like напиши where Upper(Surname) like ты не указал СУБД посему в SQL коде может быть написана другая ф-ия, но в её названии скорее всего будет фигурировать слово Upper. ЗЫ. Можно конечно и к Lower - на вкус и цвет как говорится... лишь бы регистры били одинаковые. |
Автор: PaWeLL 4.12.2009, 18:49 |
Спасибо. Поиск заработал. Одна только странная вещь. Поиск почему-то не любит букву Я. При вводе части имени с буквой Я результат пустой. Если попробовать ввести часть того же имени только без Я, то результат есть. Подскажите, что с этим делать? Да, кстати БД Paradox, если это сейчас важно. |
Автор: ТоляМБА 4.12.2009, 18:59 |
PaWeLL, если это не стандартный глюк делфей, то тогда укажи версию делфи, СУБД и её версию и через какие компаненты подключаешься к БД. |
Автор: PaWeLL 4.12.2009, 19:10 | ||
Delphi 7, база данных paradox 7. Подключаю все через SQL explorer 4.0 |
Автор: romchyk 3.1.2010, 18:38 |
Вместо like используйте ilike (в postgrtesql не учитывает регистр). Например так 'Select filelds from workers where Surname ilike '+#39+'%'+a+'%'+#39+';'; |