2016-08-02 1 views
0

Я хочу получить по названию, который начинается с числа и представляет собой комбинацию числа и строки.SQL ORDER BY string с номером

Пример данных:

title 
------------ 
1 Blub 
2 Blub 
3 Blub 
4 Blub 
5 Blub 
6 Blub 
7 Blub 
8 Blub 
9 Blub 
10 Blub 
11 Blub 
12 Blub 
13 Blub 

Настройки по умолчанию ORDER BY title дают мне:

1 Blub 
10 Blub 
11 Blub 
12 Blub 
13 Blub 
2 Blub 
20 Blub 
21 Blub 

Можно ли получить правильный ORDER BY по значению числа?

1 Blub 
2 Blub 
10 Blub 
11 Blub 
12 Blub 
13 Blub 
20 Blub 
21 Blub 
+1

'заказ по названию + 0' должен это сделать. –

ответ

3

ORDER BY CONVERT(INT, SUBSTRING(title, 1, 2)) должен работать, так как пространство будет игнорироваться. Если у вас есть номера выше 99, это не сработает.

1

Попробуйте это:

order by cast(LEFT(title,LOCATE(' ',title) - 1) as unsigned) 
1

Это разделит ваше поле в номер и текст частей и заказать его тогда.

order by CONVERT(INT, SUBSTRING_INDEX(title, ' ', 1)) ASC, SUBSTRING_INDEX(title, ' ', -1) ASC