2016-08-02 10 views
0

Ich möchte oder nach Titel, die mit einer Zahl beginnen und ist eine Kombination aus Zahl und String.SQL ORDER BY-String mit der Nummer

Beispieldaten:

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 

Der Standard ORDER BY title mir geben:

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

Ist es möglich, die korrekte ORDER BY durch Zahlenwert zu erhalten?

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

'Reihenfolge nach Titel + 0' sollte es tun. –

Antwort

3

ORDER BY CONVERT(INT, SUBSTRING(title, 1, 2)) funktionieren sollte, wird da der Raum außer Acht gelassen werden. Wenn Sie Zahlen größer als 99 haben, wird es nicht funktionieren.

1

Versuchen Sie folgendes:

select * 
from yourtable 
order by (title + 0) 

Demo Here

1

Try this:

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

Dies teilen Sie Ihre Feld in Anzahl und Textteile und wird es dann bestellen.

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