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

Откуда: Novosibirsk
Сообщений: 29
Доброго всем времени. Собственно сабж. Есть код, есть вывод данных, но order by работает некорректно.
select len(skln_statrep), NmEi_QtOsn, skln_statrep, nmEi_QtOsn 
from skln 
left join sklnomei on skln_rcd=nmei_rcdnom
where skln_statrep in(2,11,2396,34513,34547,38045,41768,41776,42046,43152,43487,43489,43805,
                             44018,44375,44426,44957,44959,44975,44977,44983,45563,45634,45909,46153,
                             46168,46330, 46549,46694) and
nmei_cd=3 and skln_rcdgrp in (257,259,260,261,275)
order by   skln_statrep
lenght NmEi_QtOsn skln_statrep nmEi_QtOsn
2 160.000000 11 160.000000
1 160.000000 2 160.000000
4 600.000000 2396 600.000000
5 224.000000 34513 224.000000
5 144.000000 34547 144.000000
5 600.000000 38045 600.000000
5 576.000000 41768 576.000000
5 600.000000 41776 600.000000
5 192.000000 42046 192.000000
5 16.000000 43152 16.000000
5 384.000000 43487 384.000000
5 384.000000 43489 384.000000
5 144.000000 43805 144.000000
5 600.000000 44018 600.000000
5 180.000000 44375 180.000000
5 600.000000 44426 600.000000
5 36.000000 44957 36.000000
5 36.000000 44959 36.000000
5 72.000000 44975 72.000000
5 72.000000 44977 72.000000
5 72.000000 44983 72.000000
5 224.000000 45563 224.000000
5 96.000000 45634 96.000000
5 16.000000 45909 16.000000
5 24.000000 46153 24.000000
5 168.000000 46168 168.000000
5 600.000000 46330 600.000000
5 180.000000 46549 180.000000
5 8.000000 46694 8.000000

Думал, может где то пробел закрался, но первый столбец в выводе показывает количество символов в столбце skln_statrep. Или пробел не символ для функции len? О_о Собственно вопрос, с чем это может быть связанно и как поправить?
14 ноя 11, 12:49    [11592305]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
komrad
Member

Откуда:
Сообщений: 5764
unit4,

skln_statrep - текстовое поле

покажи скрипт таблицы skln
14 ноя 11, 12:51    [11592321]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
unit4
order by работает некорректно
да нет, вполне корректно
14 ноя 11, 12:56    [11592363]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Glory
Member

Откуда:
Сообщений: 104751
unit4
Есть код, есть вывод данных, но order by работает некорректно.

Корректно
Потому что вы сортируете строки,а не числа
14 ноя 11, 12:59    [11592379]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
unit4,

Попробуй так
order by   CONVERT(int, skln_statrep)
или
order by   CONVERT(bigint, skln_statrep)
14 ноя 11, 13:01    [11592398]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
Всем спасибо. Да, действительно поле имеет тип varchar(10). Что то я сам недопетрил)
CONVERT(int, skln_statrep) помогло.
14 ноя 11, 13:05    [11592432]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
komrad
Member

Откуда:
Сообщений: 5764
unit4
Всем спасибо. Да, действительно поле имеет тип varchar(10). Что то я сам недопетрил)
CONVERT(int, skln_statrep) помогло.


так еще и я неявное преобразование типов в запросе идет
что не есть хорошо

skln_statrep in(2,11,2396,34513,34547,38045,41768,41776,42046,43152,43487,43489,43805,
                             44018,44375,44426,44957,44959,44975,44977,44983,45563,45634,45909,46153,
                             46168,46330, 46549,46694)
14 ноя 11, 13:06    [11592450]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
Передавайте привет тому, кто Вам такую базу спроектировал
14 ноя 11, 13:09    [11592495]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
Паганель, это на Украине ваяют таки БД, а мы потом в России мучаемся)))
14 ноя 11, 13:12    [11592524]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
unit4
Паганель, это на Украине ваяют таки БД, а мы потом в России мучаемся)))


к мучающимся: так ваяйте сами
или расскажите как правильно ваять, вы ведь в курсе, и не сортируете по строке с недоумением
14 ноя 11, 13:19    [11592591]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
Winnipuh, дак а чего рассказывать. Поле просто может содержать и буквы, я просто как то не подумал об этом.
А вы топики по слову Украина ищите?:)
14 ноя 11, 13:23    [11592633]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
unit4
Паганель, это на Украине ваяют таки БД, а мы потом в России мучаемся)))

Угу, вот вам будет весело, когда выяснится, что в skln_statrep может быть нечто вида abc12345, вот тогда и помянут кого-то незлым тихим словом за преобразования в инты.

Может всеж-таки так будет безопаснее?
SELECT '123', RIGHT(REPLICATE('0',20)+'123',10)
14 ноя 11, 13:23    [11592634]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
kDnZP
unit4
Паганель, это на Украине ваяют таки БД, а мы потом в России мучаемся)))

Угу, вот вам будет весело, когда выяснится, что в skln_statrep может быть нечто вида abc12345, вот тогда и помянут кого-то незлым тихим словом за преобразования в инты.

Может всеж-таки так будет безопаснее?
SELECT '123', RIGHT(REPLICATE('0',20)+'123',10)


Не до конца понял чего оно делает. Повторяет двадцать раз 0 справа? Можно поподробней логику объяснить? Видите ли я нуб)
14 ноя 11, 13:29    [11592672]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
unit4
Поле просто может содержать и буквы
зашибись, и как же тогда надо сортировать?
14 ноя 11, 13:29    [11592676]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
Паганель,в моем случае я искренне надеюсь, что буквы мне не попадутся)))) Вот уже с 2008 как фирма использует эту база и букв не было пока...
Однако с Украиной шутка не вкатила и нашелся человек оттуда, хотя я думал что не будет такого совпадения))
14 ноя 11, 13:34    [11592719]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
kDnZP
unit4
Паганель, это на Украине ваяют таки БД, а мы потом в России мучаемся)))

Угу, вот вам будет весело, когда выяснится, что в skln_statrep может быть нечто вида abc12345, вот тогда и помянут кого-то незлым тихим словом за преобразования в инты.

Может всеж-таки так будет безопаснее?
SELECT '123', RIGHT(REPLICATE('0',20)+'123',10)

Если я сделаю так как вы посоветовали, то картина не меняется.
414880/11 160.000000 11 160.000000 0000000011
414879/2 160.000000 2 160.000000 0000000002
14 ноя 11, 13:37    [11592750]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
unit4
Паганель,в моем случае я искренне надеюсь, что буквы мне не попадутся)))) Вот уже с 2008 как фирма использует эту база и букв не было пока...
Однако с Украиной шутка не вкатила и нашелся человек оттуда, хотя я думал что не будет такого совпадения))



лучше перечитайте еще раз первых два предложения
и потом уже шутите, вместе посмеемся
14 ноя 11, 13:49    [11592867]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
Winnipuh, вы бы лучше чего дельного подсказали. А на шутки обижаться не стоит;) Хотя БД и вправду в Украине ваялась)
14 ноя 11, 14:07    [11593019]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Так кто автор БД - Паганель или Winnipuh?
Признавайтесь!
14 ноя 11, 14:19    [11593148]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
unit4
kDnZP
пропущено...

Угу, вот вам будет весело, когда выяснится, что в skln_statrep может быть нечто вида abc12345, вот тогда и помянут кого-то незлым тихим словом за преобразования в инты.

Может всеж-таки так будет безопаснее?
SELECT '123', RIGHT(REPLICATE('0',20)+'123',10)

Если я сделаю так как вы посоветовали, то картина не меняется.
414880/11 160.000000 11 160.000000 0000000011
414879/2 160.000000 2 160.000000 0000000002
Всё-таки, как - так??

По-Вашему, 0 > 1 что ли?
14 ноя 11, 14:23    [11593180]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
На всяк случай:

;WITH tst AS (
SELECT '1' tfld UNION ALL SELECT '12' UNION ALL SELECT '111' UNION ALL SELECT '23'
)
SELECT * FROM tst ORDER BY tfld

;WITH tst AS (
SELECT '1' tfld UNION ALL SELECT '12' UNION ALL SELECT '111' UNION ALL SELECT '23'
)
SELECT * FROM tst ORDER BY RIGHT(REPLICATE('0',10)+tfld,10)
14 ноя 11, 14:37    [11593322]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Konst_One
Member

Откуда:
Сообщений: 11625
ТСу наверно другая сортировка нужна, вот по этому полю:
1. 414879/2
2. 414880/11

или сочетанию значений из этого поля , разделитель /
14 ноя 11, 14:40    [11593348]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
unit4
kDnZP
Может всеж-таки так будет безопаснее?
SELECT '123', RIGHT(REPLICATE('0',20)+'123',10)

Если я сделаю так как вы посоветовали, то картина не меняется.
414880/11 160.000000 11 160.000000 0000000011
414879/2 160.000000 2 160.000000 0000000002


а order by вы поменяли или только выборку?
14 ноя 11, 14:40    [11593352]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
unit4
Winnipuh, вы бы лучше чего дельного подсказали. А на шутки обижаться не стоит;) Хотя БД и вправду в Украине ваялась)


да какие там обиды...
В данном случае видимо оставили возможность вводить в поле не только числа...
Это вы еще не видели баз, сдизайнированных индусами, вот где реальный писец, было у меня несколько, так там даже поля цена, количество были типа varchar
14 ноя 11, 14:44    [11593385]     Ответить | Цитировать Сообщить модератору
 Re: Не правильно сортирует ORDER BY  [new]
unit4
Member

Откуда: Novosibirsk
Сообщений: 29
iap
unit4
пропущено...

Если я сделаю так как вы посоветовали, то картина не меняется.
414880/11 160.000000 11 160.000000 0000000011
414879/2 160.000000 2 160.000000 0000000002
Всё-таки, как - так??

По-Вашему, 0 > 1 что ли?

Не понял, к чему вы это?
14 ноя 11, 14:58    [11593537]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить