搜尋本站文章

想得到最新的資訊嗎?歡迎訂閱本站文章

2009年4月10日星期五

[MySQL] 讓中文依筆畫排序

當資料庫是使用UTF-8編碼時,若有A欄位是中文,且要依此欄位進行排序,將會造成排序可能不如預期之現象。而資料庫的編碼格式是UTF-8,因此將會依UTF-8的編碼來排序,而不會依我們所預期的Big-5來排序。

而在知道原因後,要解決此問題就變得相對容易,只要在排序時,將排序的欄位轉為BIG-5就可以依筆畫排序了。而這個轉換的利器,就是「CONVERT(欄位名稱 using big5)」。

舉例來說,若有一個資料表「test」中的欄位是這樣的內容:

idname
1
國立大甲高中
2
國立大里高中
3
市立內湖高中
4
國立中和高中

如果要依「name」來遞減排序,只要用下列程式碼就可以了。

SELECT * FROM `test` WHERE 1 order by CONVERT(`name` using big5) desc

版權說明
本文章發佈於海芋小站,內容僅歡迎「部份」引用,引用時請註明出處及原文連結,謝謝。
若圖像無法顯示,可能因流量太大,敬請重新整理或透過留言與我回報,也歡迎「訂閱」本站文章喔,感恩!!
Related Posts with Thumbnails

3 Comments:

日落 提到...

Cool!

神寶 提到...

我按照你的SQL語法來套進去..不過沒有出現預測的筆劃順序
LINK

有另外一種方法嗎??

NidgetGod 提到...

這個方法有個問題

如果字首筆劃一樣的字串它還是會亂掉

你可以試試王和方這兩個比劃一樣的字首各建立一些假名下去排列

相信你會發現這方法並不實用。

張貼意見

1.本留言處歡迎多加留言交流,但不歡迎垃圾留言及廣告留言
2.留言時可以使用部份HTML標記,例如<b>, <i>, <a>
3.對於教學文章介紹或軟體使用有問題歡迎提出,若站長沒回應表示不清楚該問題的解決方案
4.站長保留不當刪除留言的權力,若造成不便尚請見諒