當資料庫是使用UTF-8編碼時,若有A欄位是中文,且要依此欄位進行排序,將會造成排序可能不如預期之現象。而資料庫的編碼格式是UTF-8,因此將會依UTF-8的編碼來排序,而不會依我們所預期的Big-5來排序。
而在知道原因後,要解決此問題就變得相對容易,只要在排序時,將排序的欄位轉為BIG-5就可以依筆畫排序了。而這個轉換的利器,就是「CONVERT(欄位名稱 using big5)」。
舉例來說,若有一個資料表「test」中的欄位是這樣的內容:id name 1 國立大甲高中 2 國立大里高中 3 市立內湖高中 4 國立中和高中
如果要依「name」來遞減排序,只要用下列程式碼就可以了。
SELECT * FROM `test` WHERE 1 order by CONVERT(`name` using big5) desc


3 Comments:
Cool!
我按照你的SQL語法來套進去..不過沒有出現預測的筆劃順序
LINK
有另外一種方法嗎??
這個方法有個問題
如果字首筆劃一樣的字串它還是會亂掉
你可以試試王和方這兩個比劃一樣的字首各建立一些假名下去排列
相信你會發現這方法並不實用。
張貼意見
1.本留言處歡迎多加留言交流,但不歡迎垃圾留言及廣告留言
2.留言時可以使用部份HTML標記,例如<b>, <i>, <a>
3.對於教學文章介紹或軟體使用有問題歡迎提出,若站長沒回應表示不清楚該問題的解決方案
4.站長保留不當刪除留言的權力,若造成不便尚請見諒