|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблемка с типом полей
У меня есть таблица dbf, в ней три поля, все поля типа CHARACTER (20). Но дело в том что в определенном поле содержатся только числовые значения, а мне нужно сделать сортировку по этому полю, но так как оно типа CHAR, а не NUMBER, то запрос вида "select * from table order by pole desc" не работает как надо. Эта таблица автоматически загружается с диска, все в программе работает через sql запросы. Как мне можно преобразовать поле, чтобы работала сортировка?
|
#2
|
|||
|
|||
попробуй:
Код:
select * from table order by binary(pole) desc взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#3
|
|||
|
|||
Нет, не работает.
|
#4
|
||||
|
||||
Код:
procedure TForm1.Button2Click(Sender: TObject); begin Query1.SQL.Text:='select * from table_a order by field1 desc'; Query1.Open; end; Последний раз редактировалось Admin, Сегодня в 10:32. |
#5
|
|||
|
|||
friz, у меня вообще-то подобный запрос как раз и не работает, точнее он работает но не сортирует числа в числовом поле по убыванию. Мне предоставили таблицу dbf в которой все поля имеют тип CHARACTER(20). И т.к. сортируемое поле типа char а не number, то и сортирует запрос криво. а мне нужно как-то преобразовать поле.
|
#6
|
|||
|
|||
Если попробовать так:
Код:
select *, cast(pole as number) as sortpole from table order by sortpole desc или так: select * from table order by cast(pole as number) desc |
#7
|
|||
|
|||
Asinkrit, к сожалению при выполнении этого кода:
tables.exc.Close; tables.exc.SQL.Text:='select ID, ENAME, TYPE, TNAME, CAP, DIST from exc order by cast(ID as number) desc'; tables.exc.Open; выдает окно с ошибкой: |
#8
|
|||
|
|||
А первый вариант? так же, попробуй без второго as
|
#9
|
|||
|
|||
Таже ошибка в обоих случаях:
tables.exc.Close; tables.exc.SQL.Text:='select ID, ENAME, TYPE, TNAME, CAP, DIST, cast(ID as number) sortpole from exc order by sortpole desc'; tables.exc.Open; tables.exc.Close; tables.exc.SQL.Text:='select ID, ENAME, TYPE, TNAME, CAP, DIST, cast(ID as number) as sortpole from exc order by sortpole desc'; tables.exc.Open; только где Token пишет number) |
#10
|
||||
|
||||
-имеется таблица industry.dbf ("c:\Program Files\Common Files\Borland Shared\Data\industry.dbf"), в которой нужное нам поле "ind_name" имеет тип char, содержит числовые данные и нам по нему нужно правильно отсортировать
-создаем вьюшку: --это файл industry.sql, который должен лежать вместе с industry.dbf (в одной папке) --содержимое: Код:
select industry.*, cast(ind_name as integer) IND_NAME_INT from industry.dbf industry Код:
Query1.SQL.Text:='select * from industry.sql order by IND_NAME_INT desc'; Query1.Open; "c:\Program Files\Common Files\Borland Shared\BDE\LOCALSQL.HLP" Пишу программы за еду. __________________ |