SQL Varchar Order - PullRequest
       2

SQL Varchar Order

1 голос
/ 09 октября 2011

Почему, когда у меня есть записи типа (ratings = varchar):

A - 100
B - 70
C - 30

Тогда:

SELECT * FROM `videos` ORDER BY `rating` DESC

Дает:

A - 30
B - 70
C - 100

И:

SELECT * FROM `videos` ORDER BY `rating` ASC

Дает:

A - 100
B - 70
C - 30

Но когда (ratings = tinyint):

SELECT * FROM `videos` ORDER BY `rating` DESC

Дает:

A - 100
B - 70
C - 30

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

Если у вас есть столбец varchar, длина текстовых данных и тот факт, что символ '0' предшествует символу '1' (а не после символа '9'), влияет на порядок сортировки.

например, сравните

select '100' as col1 
union all 
select '70' as col1
order by col1 asc

с

select '100' as col1 
union all 
select '070' as col1
order by col1 asc

Вы можете обойти это, подходящим образом добавив все строки одинаковой длины.

0 голосов
/ 09 октября 2011

вы можете попробовать:

SELECT * FROM videos ORDER BY rating, videos DESC
...