2015-07-17 4 views
0

Я получаю странные результаты из этого запроса:Сортировка с более чем 1 из длины

SELECT id, nivel, tipo, titulo, texto, ativa 
FROM quests_faq 
ORDER BY nivel ASC; 

Результат должен быть таким:

5 
10 
15 
20 
40 
50 
55 
etc.. 

Вместо этого он сортирует только самые первый номер:

10 
15 
2 
30 
40 
5 
55 
etc 

Моя строка "nivel" содержит только целые числа.
Как я могу использовать заказ в этом случае для цели, которую я хочу?

+2

Кажется, тип данных Nivel является CHAR, а не количество, и сортируется лексикографически –

+1

Да, это был его , строка имела varchar, а не int. Спасибо – Monteiro

ответ

1

Этот запрос может делать то, что вы ищете путем преобразования Nivel в число

SELECT id, nivel, tipo, titulo, texto, ativa 
FROM quests_faq 
ORDER BY CONVERT(nivel, INTEGER) ASC 
+0

Или просто nivel + 0, но, вероятно, лучше всего использовать правильный тип данных – Strawberry

0

Я думаю, что это может быть полезно:

SELECT id, nivel FROM quests_faq ORDER BY CAST(id as CHAR(13)) ASC 

Ура!

Смежные вопросы