MYSQL中讓UTF-8編碼的欄位按拼音排序
阿新 • • 發佈:2019-02-05
原文地址:http://carvin.iteye.com/blog/810867
在mysql中使用預設字符集為utf8,結果想要把中文按拼音排序出現了問題,排出來的順序亂七八糟,不是我們想要的結果。
解決辦法如下:
1、不想改變表定義及預設編碼的情況,將欄位先轉換成gbk編碼再排序:
SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;
chinese_field 為要進行排序的中文欄位名稱
前提是在安裝mysql時安裝了gbk字符集,不然會報錯:
#1115 - Unknown character set: 'gbk'
在編譯原始碼時加上gbk編碼即可,如果已經安裝好了,重新編譯再安裝,重新編譯安裝一般不會影響mysql的已有設定,包括資料都不會受到影響。
2、直接將欄位的字符集改成gbk,然後直接使用order by 排序即可。
mysql 5.x支援某列單獨定義字符集。
轉載者備註:
直接將欄位的字符集改成gbk語法如下:
ALTER TABLE `表名` MODIFY COLUMN `欄位名` 欄位型別 CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL;
比如:
ALTER TABLE `forecast` MODIFY COLUMN `title` varchar(255) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL;