1. 程式人生 > >MYSQL中讓UTF-8編碼的欄位按拼音排序

MYSQL中讓UTF-8編碼的欄位按拼音排序

原文地址: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;