Как сделать сортировку в SQL SERVER varchar типов - PullRequest
0 голосов
/ 29 июня 2009

У меня есть таблица tblSwap со столбцом StroreVals.

StroreVals


20

21

29

11

10

5

7

Я хочу получить результат в порядке убывания, используя SQL SERVER 2005.

Как это сделать?

Если вы запускаете SELECT StroreVals ОТ tblSwap, ЗАКАЗАТЬ ПО StroreVals DESC

Выход 7

5

29

21

20

11

10

Кроме того, если это как "Abc", "Def", "Azy", "kly"? Пожалуйста, помогите

Ответы [ 3 ]

5 голосов
/ 29 июня 2009

Вы сохранили числа в поле varchar, но хотите, чтобы они были упорядочены как числа.

Сделайте это, конвертируйте поле в числовое для сортировки:

SELECT StroreVals  
FROM tblSwap ORDER BY convert(int,StroreVals) DESC

Допущения: все значения можно преобразовать в int, в противном случае вы получите ошибку.

3 голосов
/ 29 июня 2009

, если кастинг не вариант, вы можете сделать это:

SELECT StroreVals 
FROM tblSwap 
order by right(replicate('0', 11) + StroreVals, 10)
0 голосов
/ 29 июня 2009

Если вы храните ваши данные как varchar, они по умолчанию сортируются как varchar с порядком сортировки, указанным в параметрах сортировки

когда у вас есть строка: '3','111','2' и вы сортируете desc, вы получите '3','2','111' точно так же, как если бы у вас были строки 'c','aaa','b' sort desc as 'c','b','aaa'

Если в вашем поле хранятся только числа, сохраните их в виде чисел или используйте приведение в соответствии с рекомендациями tekBlues

Если у вас есть как числа, так и строки, и вас не устраивает стандартная сортировка строк, вам может потребоваться определить собственные критерии сортировки, например. решение, предложенное Младен

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