Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отсортировать данные??? [D5, IB5.x]


Sirus ©   (2002-11-12 07:04:00) 

Привет Мастера...
Есть вопрос: Как можно отсортировать результат запроса по полю текстового типа ( VARCHAR)???
Есть поле типа VARCHAR там встречаются данные числового типа...
Так вот при сортировке типа ORDER BY FIELDполучаю что-то типа ( 1, 10, 2, 25, 3, 4, 5, 51) и т.д. то есть цифры сортируются как строки... а мне нужна сортировка типа ( 1, 2, 3, 4, 5, 10, 25, 51)... Как можно организовать???


Reindeer Moss Eater   (2002-11-12 11:59:00) [1]

function StrValue(sz: PChar):integer; cdecl; export;
var aStr:string; i:integer;
begin
aStr:=StrPas(sz);
for i:=Length(aStr) downto 1 do if not (aStr[i] in ["0".."9"]) then Delete(aStr,i,1);
Result:=StrToIntDef(aStr,0);
end;

Select StrValue(Поле_номера_Квартиры), T.* From MyTable T
Order By 1


Reindeer Moss Eater   (2002-11-12 11:49:00) [2]

http://www.ibase.ru/devinfo/udf_ok.htm


Sirus   (2002-11-12 11:47:00) [3]

>Reindeer Moss Eater (12.11.02 08:40)
>Или написать UDF

А как его написать и использовать??? Хотя бы как его использовать???


Reindeer Moss Eater   (2002-11-12 08:40:00) [4]

Или написать UDF


Andriano   (2002-11-12 08:35:00) [5]

Придётся добавлять незначущие нули перед числами (Это на стороне сервера). Или делать локальную сортировку на стороне клиента.


Sirus   (2002-11-12 08:28:00) [6]

Поле хранит данные квартир... тип VARCHAR(4)
ну в смыслу там встречаются данные типа 121 и 121А...
При использовании CAST ошибки будут???


VAleksey   (2002-11-12 07:57:00) [7]

если данные только "встречаются"то никак


Alexandr   (2002-11-12 07:32:00) [8]

select cast(tvoyvarchar as integer)
from....
order by 1


Наверх

Титульная страница Поиск, карта сайта Написать письмо