Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Сортировка   Найти похожие ветки 

 
Chel   (2005-02-19 16:32) [0]

Есть некая база необходимо отсортировать её по полю в котором содержатся числа, а внекоторых записях после числа может быть любой символ.
Пример:1;2;5;7;99;1А;4Б;4;4А;1а
нужно:1;1А;1а;2;3;4;4А;4Б;5;7;99


 
Anatoly Podgoretsky ©   (2005-02-19 16:44) [1]

MSSQL не поддерживает сортировки, жто возможно только для Парадокс и дБейс при работе через БДЕ, функция dbiTableSort/
Тебе нужна не сортировка, а упорядочивание выборки, не знаю возможно ли это сделать через хранимые процедуры. Но сама по себе задача странная и говорит о неверном дизайне базы. Может стоит добавить поле сортирки, состоящие из двух полей цифровой и символьной, конечно если ты указал правильный формат данных, а то окажется что у тебя еще и 1a2b


 
Fin ©   (2005-02-19 17:09) [2]

Chel   (19.02.05 16:32) не давно пришлось решать похожую проблемму.
Я так понимаю поле по которому сортируешь номер дома или квартиры из адреса?
Короче к делу.
Как уже упомянул > Anatoly Podgoretsky © ,я использовал хранимую процедуру и в добавок функцию определяемую пользователем.
И так процедура следующего вида:
select твое_поле,dbo.SortT(твое_поле) as sortt
from твоя_таблица
order by sortt,твое_поле
Теперь пользовательская функция:
CREATE FUNCTION SortT  (@text varchar(50))
RETURNS int
AS
BEGIN
declare @sort int
declare @len int
declare @stop bit
declare @first char(1)
set @text=ltrim(rtrim(@text))
set @first=substring(@text,1,1)
if isnumeric(@first)=1
begin
set @stop=0
if isnumeric(@text)=1
begin
set @sort=cast(@text as int)
end
else
begin
while @stop<>1
begin
set @len=len(@text)-1
set @text=substring(@text,1,@len)
if  isnumeric(@text)=1
begin
set set @sort=cast(@text as int)
set @stop=1
end
else if @len<1 set @stop=1
end
end;
end
else set @sort=0
RETURN(@sort)
END
Всё.
И кое какие замечания по поводу того чтобы выводить сначала 1А и после 1а, то сервер берет это на себя, думать не надо, но если всё же преспичит то немного переделай функцию что бы на выходе было не целое число, а вещественное, и соответсвенно в дробной части определяешь порядок по сортировке одного и того же символа но с разным регистром.
Надеюсь описал дотупно.
З.Ы. И еще хотелось бы еще услышать о других вариантах, но реализованных на сервере.(Просто интересно)


 
Fin ©   (2005-02-19 17:19) [3]

З.З.Ы. Да и как правельно заметил Anatoly Podgoretsky это  всеже не сортиовка а упорядоченная выборка.


 
Chel   (2005-02-19 17:32) [4]

Fin, а можно поподробней и с комментарием по каждой строчке.


 
Johnmen ©   (2005-02-19 17:43) [5]

>Chel  

Может тебе ещё ключ от квартиры ?


 
Chel   (2005-02-19 17:49) [6]

Johnmen не надо грубить, мне срочно надо а разбираться в написанном не когда. Раз написал текст, дак уж бы и прокементировал бы общие направления.


 
Johnmen ©   (2005-02-19 18:01) [7]

>Chel

Да ты шо ???????????? Где грубость увидел то ?????????????????7

Просто имей в виду, что когда за тебя что-то делают, то это стОит денег. Причём, с надбавкой за срочность.

Ку ?


 
Anatoly Podgoretsky ©   (2005-02-19 18:03) [8]

Chel   (19.02.05 17:49) [6]
Ну если сейчас нет времени, то отложи на более поздний срок, когда оно появится.


 
Chel   (2005-02-19 18:13) [9]

to: Johnmen: какие деньги, я просил о помощи на общественном форуме, сам в этом деле не очень, мне дали код но без комментариев для меня с моим уровнем познаний на данный момент не вьехать, а откладывать по совету анатолия на поздний срок, не когда горю, сроки поджимают.
to: Fin ау, ты где, как же насчет пояснений и лучше поподробней.
И еще Johnmen откуда у студентов деньги?????


 
Fin ©   (2005-02-19 18:26) [10]


> Chel

Я ТЕБЯ НЕ КУДА НЕ ПОСЫЛАЛ? (это не грубость)


 
Anatoly Podgoretsky ©   (2005-02-19 18:28) [11]

Даже при очень плохих знания смог бы сделать два поля и упорядочивать по ним, когда появятся знания то сможешь сделать это на профессиональном уровне, а пока делай на любительском.
Проход то по строке с цельль определения конца цифр и начала букв, наверно в состоянии сделать, если нет то еще рано браться за программирование и особенно за базы, ущерб может быть большой.


 
Johnmen ©   (2005-02-19 19:18) [12]

>Anatoly Podgoretsky ©  (19.02.05 18:28) [11]

Так он за программирование и не берётся. Просто хочет, чтобы ему его задание (курсовую/диплом?) сделали, да побыстрей, да побесплатней...


 
Anatoly Podgoretsky ©   (2005-02-19 19:20) [13]

Его проблема, если есть деньги то ему напишут любой проект, если нет то пусть ищет энтузиаста


 
Johnmen ©   (2005-02-19 19:26) [14]

Вот он и ищет.........
Но, главное, почему ЗДЕСЬ ???


 
Anatoly Podgoretsky ©   (2005-02-19 19:36) [15]

Плохой он искатель, а насчет почему, ну наверно думает так о местном контингете и не учитывает, что интеллект у большинства он достаточно высокий.


 
Chel   (2005-02-19 19:45) [16]

Да я ищу, и похоже не в том месте, а не в том потому что вы и сами не знаете как что либо сделать, а Fin и сам наверное где то спер код а сам и не знает как это работает, поэтому и не коментирует.


 
Anatoly Podgoretsky ©   (2005-02-19 19:55) [17]

Трудно тебе придется в жизни, бить будут ногами.


 
Chel   (2005-02-19 20:11) [18]


> Anatoly Podgoretsky ©   (19.02.05 19:55) [17]
> Трудно тебе придется в жизни, бить будут ногами.

из чего такие выводы?


 
Anatoly Podgoretsky ©   (2005-02-19 21:34) [19]

Когда будут бить и спросишь за что.



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

Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.04 c
14-1109682549
SergP
2005-03-01 16:09
2005.03.20
Автоматизация MSOffice. Памагите!!!


1-1110123584
ser35
2005-03-06 18:39
2005.03.20
Рисунок с расширение GIF


1-1109837887
100а
2005-03-03 11:18
2005.03.20
ShellTreeView


6-1106219568
Star
2005-01-20 14:12
2005.03.20
Обработка ошибок IdHTTP


14-1109675305
Layner
2005-03-01 14:08
2005.03.20
А можно ли сделать так, при закрытии Delphi7, она помнила





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский