Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с сортировкой  [new]
expel
Member

Откуда:
Сообщений: 155
Понимаю что данная тема наверно ни раз обсуждалась, но ввиду большого количества тем по сортировкам ничего толкового я не нашел. Поэтому объясните в 100ый раз плз, как :
Заставить mssql сортировать данные не как текст :
числа
1
11
13
2
3
4
44
5

А как числа :
числа
1
2
3
4
5
11
13
44

Пробовал касты и конверты сортируемого столбца в числовые типы, но не помогло =(
16 июл 11, 15:18    [10984045]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1578
expel
Пробовал касты и конверты сортируемого столбца в числовые типы, но не помогло =(
А пробовал правильно? А зачем числа как строки хранить?
create table tt (f1 char(10))
insert into tt (f1) values ( 
11), 
(13),
(2 ),
(3 ),
(4 ),
(44), 
(5 )
select * from tt order by CAST(f1 as int)
drop table tt
16 июл 11, 15:25    [10984053]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
access116
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 1
Sergey Sizov,ага, верно, просто тип данных на целочисленный сменить надо
16 июл 11, 15:34    [10984071]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
expel
Member

Откуда:
Сообщений: 155
Sergey Sizov
expel
Пробовал касты и конверты сортируемого столбца в числовые типы, но не помогло =(
А пробовал правильно? А зачем числа как строки хранить?
create table tt (f1 char(10))
insert into tt (f1) values ( 
11), 
(13),
(2 ),
(3 ),
(4 ),
(44), 
(5 )
select * from tt order by CAST(f1 as int)
drop table tt

Вообще я решаю задачки с sql-ex.ru и даже столбцы с типом int, там сортируются как :
code
1
10
11
12
13
2
3
4
5
6
7
8
9

Или данная проблема там просто не лечится?
16 июл 11, 15:34    [10984072]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1578
expel
Вообще я решаю задачки с sql-ex.ru и даже столбцы с типом int, там сортируются как :
code
1
10
11
12
13
2
3
4
5
6
7
8
9

Или данная проблема там просто не лечится?
Или Вы просто что-то путает/не так делаете. Что-то я не припоминаю там такой проблемы.
16 июл 11, 15:52    [10984100]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
expel
Member

Откуда:
Сообщений: 155
Sergey Sizov
Или Вы просто что-то путает/не так делаете. Что-то я не припоминаю там такой проблемы.


Да все я правильно делаю, ведь не совсем нуб (2 запроса осталось до конца первого рейтингового этапа).

select code from income
order by code

можно и без order'a т.к. по умолчанию сортирует, но сути не меняет
выдает то что я показывал

code
1
10
11
12
13
2
3
4
5
6
7
8
9


В чем проблема понять не могу.
16 июл 11, 15:58    [10984112]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
expel
можно и без order'a т.к. по умолчанию сортирует, но сути не меняет
Никто ничего по умолчанию не сортирует.
expel
В чем проблема понять не могу.
В том, что вы числа храните как строки, а потом удивляетесь, что сервер с ними как со строками и работает.
16 июл 11, 16:29    [10984190]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
expel
В чем проблема понять не могу.

Ну так напишите, как вы конкретно делали это:
expel
Пробовал касты и конверты сортируемого столбца в числовые типы, но не помогло =(
и посмотрим...

Вариант Sergey Sizov должен работать правильно.
expel
Вообще я решаю задачки с sql-ex.ru и даже столбцы с типом int, там сортируются как :
Не важно как сортируется там, важно, как сортируется на сервере :-)
16 июл 11, 16:32    [10984199]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
expel
Member

Откуда:
Сообщений: 155
Гавриленко Сергей Алексеевич
expel
можно и без order'a т.к. по умолчанию сортирует, но сути не меняет
Никто ничего по умолчанию не сортирует.
expel
В чем проблема понять не могу.
В том, что вы числа храните как строки, а потом удивляетесь, что сервер с ними как со строками и работает.


1) Я не храню числа как строки. Таблицы хранятся на сервере сайта sql-ex.ru и я их никаким образом не преобразую.

Вот ссылка на данные по таблице из которой я делаю запрос http://sql-ex.ru/help/select13.php ( 2. Фирма вторсырья )
Судя по которой тип данных в столбце code - INT !!!

select code from income order by code

данные уже не раз показывал, но так и быть еще :

code
1
10
11
12
13
2
3
4
5
6
7
8
9


2)Незнаю как насчет вообще, но mssql в реализации sql-ex.ru по умолчанию всегда сортирует данные по столбцам в порядке их следования.

Пример :

select code,point from income

code point
1 1
10 1
11 1
12 3
13 3
2 1
3 1
4 2
5 2
6 1
7 1
8 1
9 2



select point,code from income

point code
1 1
1 10
1 11
1 2
1 3
1 6
1 7
1 8
2 4
2 5
2 9
3 12
3 13
16 июл 11, 16:48    [10984241]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
expel
Member

Откуда:
Сообщений: 155
alexeyvg
Не важно как сортируется там, важно, как сортируется на сервере :-)


Все спасибо понял. Оказывается надо кликать галочку "Без проверки", и тогда сортировка отображается нормально.
16 июл 11, 16:53    [10984248]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с сортировкой  [new]
Сортировка
Guest
expel,

Там сортирует так, как отсортирован эталонный запрос
16 июл 11, 17:45    [10984352]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить