有沒有辦法按第一個字母排序mysql結果並忽略數字?例如,我有地址的列表:ORDER BY字母而不是字段的數字
- 主大街123號
- 456二街
- 234三街
,我想通過街道名稱命令,而忽略街數。是否有捷徑可尋?
有沒有辦法按第一個字母排序mysql結果並忽略數字?例如,我有地址的列表:ORDER BY字母而不是字段的數字
,我想通過街道名稱命令,而忽略街數。是否有捷徑可尋?
沒有一個真正的乾淨的方式來100%可靠地得到你想要的東西,沒有數字和街道被分成兩個不同的領域。
類似order by SUBSTRING(address, LOCATE(' ', address))
會讓你大部分在那裏。
這樣做是從第一次出現空格字符到最後得到地址的子字符串。有效地削減'123大街'的'123',所以你在'大街'排序。如果你有什麼東西在街道名稱前有多個空格......祝你好運。從自動化的角度來看,你可以做的不多。
這不會在大型數據庫設置中表現得很好。在較小的環境中,這可能會很好。如果您的環境較大,或者這不適合您,那麼您將不得不設置一個作業,將地址字段預分爲另一個字段進行排序。
+1提到分裂領域。這恕我直言將是更好的解決方案。目前的那個不能很好地擴展。 – 2010-06-10 02:49:13
假設街道號碼和街道名稱總是由空格分隔。
SELECT ...
...
ORDER BY SUBSTRING(address, FIND_IN_SET(' ', address)+1)
雖然你可以在ORDER應用的子BY子句(如johncatfish解釋),看起來你應該重新德興該表,分離一個場到街和數領域。
在那種情況下,任務變得簡單:
SELECT Number, Street
FROM Addresses
ORDER BY Street, Number
+1這是你應該採取的方法,而不是一個子串的順序。 – cletus 2010-06-10 02:56:08
你想知道如何在PHP或MySQL中做到這一點? – randombits 2010-06-10 02:43:56
@VeeArr有一種方法可以幫助新手學習該網站的工作方式,而不會成爲公司的蠢事。這與你如何做到完全相反。 – cletus 2010-06-10 02:55:00