none
Правильно сортировать данные RRS feed

Ответы

  • Тип данных nchar(10). проблема в том что в этом случае 10 идет после 1 (1, 10, 2), numeric (18,3) добавляет ноль, если после запятой недостаточно символов, а это как понимаете не нужно.

    1) зачем вообще тут текстовое поле, если храните числа?

    2) не обязательно выводить, как нумерик, достаточно в сортировке сделать конверт

    declare @t table ( val nchar(10) )
    insert into @t
    values('1'), ('2'), ('10'), ('2.5'), ('2.59'), ('2.60'), ('2.600') 
    
    select * from @t
    order by cast( val as decimal(10,3) )

    3) универсальное решение это ордер бай через кэйс


    http://www.t-sql.ru

    • Помечено в качестве ответа Program-s.g 11 июня 2013 г. 6:58
    11 июня 2013 г. 6:35
    Модератор
  • Вот похожий пример. Если в вашем столбце должны содержаться только числа, не вижу смысла делать его символьным.
    • Предложено в качестве ответа ulcerModerator 11 июня 2013 г. 6:16
    • Помечено в качестве ответа Program-s.g 11 июня 2013 г. 6:58
    11 июня 2013 г. 6:04
    Модератор

Все ответы

  • А каким типом они представлены, если обчным числовым то ORDER BY ASC.
    11 июня 2013 г. 5:43
    Модератор
  • Тип данных nchar(10). проблема в том что в этом случае 10 идет после 1 (1, 10, 2), numeric (18,3) добавляет ноль, если после запятой недостаточно символов, а это как понимаете не нужно.
    11 июня 2013 г. 5:58
  • Вот похожий пример. Если в вашем столбце должны содержаться только числа, не вижу смысла делать его символьным.
    • Предложено в качестве ответа ulcerModerator 11 июня 2013 г. 6:16
    • Помечено в качестве ответа Program-s.g 11 июня 2013 г. 6:58
    11 июня 2013 г. 6:04
    Модератор
  • Тип данных nchar(10). проблема в том что в этом случае 10 идет после 1 (1, 10, 2), numeric (18,3) добавляет ноль, если после запятой недостаточно символов, а это как понимаете не нужно.

    1) зачем вообще тут текстовое поле, если храните числа?

    2) не обязательно выводить, как нумерик, достаточно в сортировке сделать конверт

    declare @t table ( val nchar(10) )
    insert into @t
    values('1'), ('2'), ('10'), ('2.5'), ('2.59'), ('2.60'), ('2.600') 
    
    select * from @t
    order by cast( val as decimal(10,3) )

    3) универсальное решение это ордер бай через кэйс


    http://www.t-sql.ru

    • Помечено в качестве ответа Program-s.g 11 июня 2013 г. 6:58
    11 июня 2013 г. 6:35
    Модератор