有沒有辦法在MySQL中的元素是這樣排序:MySQL的順序由字母 - 數字
元素:
- 市1
- 市2
- 市10
- 市1A
當我做的ORDER BY列表看起來這樣:
- 市1個
- 市1A
- 市10
- 市2
因爲所有的答案不匹配我的特殊問題,我編輯我的問題。 還有數字後面帶有字符的元素。觀看例子
有沒有辦法在MySQL中的元素是這樣排序:MySQL的順序由字母 - 數字
元素:
當我做的ORDER BY列表看起來這樣:
因爲所有的答案不匹配我的特殊問題,我編輯我的問題。 還有數字後面帶有字符的元素。觀看例子
用mysql投: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html 在order by
聲明。
我用這個和它工作得很好:
ORDER BY LENGTH(Elements), Elements
這隻有在你的數據庫包含「City XXXXX」形式的* only *元素時纔有效。 –
此解決方案的問題是,它不再按字母排序。如果數字出現在「a」,「b」之後,它也不起作用。 – StrongLucky
正確,但在大多數情況下,我通常會面對這種情況,它功能強大且速度很快。現在在編輯問題中,我的答案是錯誤的,@Devart答案是正確的 – tommasop
你要提取由「城市」的數字部分和秩序。
SELECT city
FROM ...
ORDER BY (SUBSTRING(city,6)+0)
這會從「城市」(從第6個字符開始)抓取數字並轉換爲字符串進行排序。
如果城市名稱長於或短於此示例,該怎麼辦? – dgw
如同,城市名稱因行而異?然後它有點困難。數字始終是字符串中的最後一個單詞嗎? (另外,如果有特殊情況需要這些,請更新您的問題,以便我們給出適當的答案)。 –
嘗試這一招 - 'ORDER BY列名+ 1',例如:
SELECT * FROM element
ORDER BY column_name+1;
[數值順序從MySQL返回結果時(可能重複http://stackoverflow.com/questions/3356190/numeric -order-when-returns-results-from-mysql) –