2010-06-10 63 views
2

有沒有辦法按第一個字母排序mysql結果並忽略數字?例如,我有地址的列表:ORDER BY字母而不是字段的數字

  • 主大街123號
  • 456二街
  • 234三街

,我想通過街道名稱命令,而忽略街數。是否有捷徑可尋?

+0

你想知道如何在PHP或MySQL中做到這一點? – randombits 2010-06-10 02:43:56

+2

@VeeArr有一種方法可以幫助新手學習該網站的工作方式,而不會成爲公司的蠢事。這與你如何做到完全相反。 – cletus 2010-06-10 02:55:00

回答

4

沒有一個真正的乾淨的方式來100%可靠地得到你想要的東西,沒有數字和街道被分成兩個不同的領域。

類似order by SUBSTRING(address, LOCATE(' ', address))會讓你大部分在那裏。

這樣做是從第一次出現空格字符到最後得到地址的子字符串。有效地削減'123大街'的'123',所以你在'大街'排序。如果你有什麼東西在街道名稱前有多個空格......祝你好運。從自動化的角度來看,你可以做的不多。

這不會在大型數據庫設置中表現得很好。在較小的環境中,這可能會很好。如果您的環境較大,或者這不適合您,那麼您將不得不設置一個作業,將地址字段預分爲另一個字段進行排序。

+0

+1提到分裂領域。這恕我直言將是更好的解決方案。目前的那個不能很好地擴展。 – 2010-06-10 02:49:13

2

假設街道號碼和街道名稱總是由空格分隔。

SELECT ... 
... 
ORDER BY SUBSTRING(address, FIND_IN_SET(' ', address)+1) 
2

雖然你可以在ORDER應用的子BY子句(如johncatfish解釋),看起來你應該重新德興該表,分離一個場到領域。

在那種情況下,任務變得簡單:

SELECT Number, Street 
FROM Addresses 
ORDER BY Street, Number 
+0

+1這是你應該採取的方法,而不是一個子串的順序。 – cletus 2010-06-10 02:56:08

相關問題