![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как организовать сортировку в БД по полю
JEK2 © (2006-02-19 15:00:00)Подскажите как организовать сортировку в БД по полю TL
Тип поля TL -alpha, данные примерно такие
34567
24865
34568
53487
34569
Требуется например после ввода в Edit1.Text текста-"34 "получить результат
34567
34568
34569
Делаю так, но выдает не тот результат который хотелось бы увидеть :(
procedure TForm1.Edit1Change(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM B_ALL.DB');
Query1.SQL.Add('WHERE TL >= "'+Edit1.Text+'"');
Query1.Open;
end;
Если сделать Тип поля TL -LongInteger тогда ваще не пойму как такую сортировку организовать :(
Desdechado (2006-02-19 19:18:00) [1]> WHERE UPPER(POLE) = 'ВодИтель' но это не подходит
В примере я тебе показал использование LIKE.
Так в чем вопрос? Подумать сложно?
Desdechado (2006-02-19 19:16:00) [2]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1140364604&n=18
Anatoly Podgoretsky (2006-02-19 18:36:00) [3]Во первых логическое противоречие
каждая запись поля начинается с заглавной буквы
не все данные полей начинаются с Заглавных букв
Во вторых какая разница, раз сделать регистронезависимую выборку.
В третьих от модератора, новая тема - новая ветка
JEK2 (2006-02-19 17:50:00) [4]Большое спасибо.
Еще один глупый вопрос.
Другие поля БД типа VARCHAR и каждая запись поля начинается с заглавной буквы. Как сделать регистронезависимую выборку.
Например поле содержит слово "Водитель" ,в Edit1.Text вводим "водиТель" и выбираются записи "Водитель","водитель","водИтель"
Нашел только описание UPPER LOWER типа
WHERE UPPER(POLE) = 'ВодИтель' но это не подходит, так как не все данные полей начинаются с Заглавных букв!
Desdechado (2006-02-19 15:05:00) [5]1. это не сортировка, это отбор данных
2. если поле текстовое, то используй LIKE
3. если поле числовое, то приводи его к текстовому, иначе "на подобие" не сравнить
4. используй параметры
например, для числового поля:
Query1.SQL.Add('SELECT * FROM B_ALL.DB');
Query1.SQL.Add('WHERE CAST(TL AS VARCHAR(20)) LIKE :P1');
Query1.Params[0].AsString:=Trim(Edit1.Text)+'%';