2013-12-16 45 views
1

我在執行mysql中的自然排序時遇到了問題。我是一個MySQL的小白,也許這也加入到了問題mysql中的自然排序技術

我有巴士號碼列表,在一個網站我就

名單的工作是在第一個隨機

bus_name

F1 
F22 
F10 
F15 
F7 
F90 

我試圖用這個做自然分類

mysql> SELECT version 
-> FROM version_sorting 
-> ORDER BY CAST(version AS UNSIGNED), version; 

取自http://www.mpopp.net/2006/06/sorting-of-numeric-values-mixed-with-alphanumeric-values/

不過我現在下面

F1 
F10 
F15 
F22 
F7 
F90 

正如我注意到,我相信上面的問題有事情做與MySQL的重視與每個字符串,從而使F7爲F70假想零,這是> F22

我希望我的名單要像

F1 
F7 
F10 
F15 
F22 
F90 

你的人能幫助我在這裏請

回答

1

你可以試試嗎?

SELECT version 
FROM version_sorting 
ORDER BY LENGTH(version), version; 
+0

尼斯使用長的我從來沒有想到這一點。 –

+0

@TinTran你好,錫。我也從SO學到了它;-) –

+0

@TinTran在這種情況下,我和Saharsh的查詢都能正常工作。但有些情況下,我想只有'LENGTH(..)'會像http://stackoverflow.com/questions/153633/natural-sort-in-mysql –

2

試試這個:

SELECT vs.version 
FROM version_sorting vs 
ORDER BY CAST(SUBSTRING(vs.version,2) AS SIGNED), vs.version; 
+0

'CASE'到'CAST' .... –

+0

@InoSHeo謝謝。這是一個錯字錯誤。我糾正了它 –