mysql8中文排序_mysql中utf8编码的中文字段按拼音排序
http://blog.s777n.net/orderbychinesefieldutf8/comment-page-2/
2010-08-24 17:36 by TomorrowMan | 分類: 技術(shù), 數(shù)據(jù)庫
如果在mysql中使用字符集為utf8,想要對中文字段用order by chinese_field 排序,那么出來的順序并不是按照拼音排序的,不是我們想要的結(jié)果。
解決方法:
1、改變字符編碼為gbk。
DD
2、不想改變編碼的話,可以用如下方法:
對中文字段使用gbk編碼排序:
SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;
當(dāng)然這需要你安裝mysql時(shí)安裝了gbk字符集,不然會(huì)報(bào)錯(cuò):#1115 - Unknown character set: 'gbk'
試了好像有不對的
mysql> select * from ywang order by convert(tname using gbk);
+------+--------+
| id?? | tname? |
+------+--------+
|??? 2 | 啊??? |
|??? 2 | 啊??? |
|??? 1 | 測試 |
|??? 1 | 測試 |
|??? 4 | 云??? |
|??? 4 | 云??? |
|??? 3 | 打??? |
|??? 3 | 打??? |
+------+--------+
8 rows in set (0.01 sec)
上面的原因是插入數(shù)據(jù)client段使用字符集問題
另一例:
mysql> select * from yy order by convert(tname using gbk);
+------+-------+
| id?? | tname |
+------+-------+
|??? 2 | 啊??? |
|??? 1 | 才??? |
|??? 4 | 他??? |
|??? 3 | 一??? |
+------+-------+
4 rows in set (0.01 sec)
mysql> show create table yy;
+-------+--------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table???????????????????????????????????????????????????????????????????????????????????????????????????????????? |
+-------+--------------------------------------------------------------------------------------------------------------------------+
| yy??? | CREATE TABLE `yy` (
`id` int(11) DEFAULT NULL,
`tname` varchar(50) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from yy;
+------+-------+
| id?? | tname |
+------+-------+
|??? 1 | 才??? |
|??? 2 | 啊??? |
|??? 3 | 一??? |
|??? 4 | 他??? |
+------+-------+
4 rows in set (0.00 sec)
***************************
對于改字符集的方法,加一個(gè)庫默認(rèn)字符集gbk,建表,然后排序,得到的就是拍好的
************************************
一些相關(guān)語句
1、使用SHOWCHARACTERSET語句列出數(shù)據(jù)庫中可用的字符集:
mysql>SHOWCHARACTERSET;2、要想列出一個(gè)字符集的校對(Collation)規(guī)則,使用SHOW COLLATION語句。
例如,要想查看latin1(“西歐ISO-8859-1”)字符集的校對規(guī)則,使用下面的語句查找那些名字以latin1開頭的校對規(guī)則:
mysql>SHOW COLLATIONLIKE'latin1%';3.查看數(shù)據(jù)表的字符集
mysql>showcreatetablemytable;
這個(gè)命令也可以查看建這個(gè)表的SQL語句。
******************************
有空還是要看一下字符集的問題
總結(jié)
以上是生活随笔為你收集整理的mysql8中文排序_mysql中utf8编码的中文字段按拼音排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: controller需要捕获异常吗_Sp
- 下一篇: mysql还原数据库后日期显示3000_