最近做一个工具,用到了mysql中文排序,我安装的mysql为utf8编码,在创建表的时候如果你不设置,默认是utf8编码。返回数据显示的时候为乱码,先让他正常显示中文
mysql> set character_set_results=gbk;
显示创建的表结构:
mysql> show create table chineseSort\g;
| Table | Create Table
| chineseSort | CREATE TABLE `chinesesort` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 |
1 row in set (0.00 sec)
在排序的时候字段中的值没有按中文的汉语拼音进行排序,先看下默认数据:
mysql> select * from chineseSort;
+----+--------------------------------------------------------+
| id | name |
+----+--------------------------------------------------------+
| 1 | 我本将心向明月,奈何明月只欠日
|
| 2 | 信春哥,考本科 |
| 3 | 带翅膀的不一定是天使,有时候是鸟人
|
| 4 | 做人的最低奋斗目标:农妇、山泉、有点田
|
| 5 | 你不可能让所有人满意,因为不是所有的人都是人
|
| 6 | 穿别人的鞋,走自己的路,让他们找去吧
|
| 7 | 做爱做的事,交配交的人
|
| 8 | 爱情永远比婚姻圣洁,婚姻永远比爱情实惠
|
| 9 | 常常告诫自己不要在一棵树上吊死,结果... 在树林里迷路了
|
| 10 | 低头要有勇气,抬头要有底气
|
+----+--------------------------------------------------------+
10 rows in set (0.00 sec)
在看下按字段name排序的结果:
mysql> select * from chineseSort order by name;
+----+--------------------------------------------------------+
| id | name |
+----+--------------------------------------------------------+
| 10 | 低头要有勇气,抬头要有底气
|
| 5 | 你不可能让所有人满意,因为不是所有的人都是人
|
| 2 | 信春哥,考本科 |
| 4 | 做人的最低奋斗目标:农妇、山泉、有点田
|
| 7 | 做爱做的事,交配交的人
|
| 3 | 带翅膀的不一定是天使,有时候是鸟人
|
| 9 | 常常告诫自己不要在一棵树上吊死,结果... 在树林里迷路了
|
| 1 | 我本将心向明月,奈何明月只欠日
|
| 8 | 爱情永远比婚姻圣洁,婚姻永远比爱情实惠
|
| 6 | 穿别人的鞋,走自己的路,让他们找去吧
|
+----+--------------------------------------------------------+
10 rows in set (0.00 sec)
并没有按照中文拼音的排序,按拼音的顺序第一应该是 8 | 爱情永远比婚姻圣洁,婚姻永远比爱情实惠
解决办法:在查询的时候将字段转换为gbk编码,看下结果:
mysql> select * from chineseSort order by Convert(name using gbk);
+----+--------------------------------------------------------+
| id | name |
+----+--------------------------------------------------------+
| 8 | 爱情永远比婚姻圣洁,婚姻永远比爱情实惠
|
| 9 | 常常告诫自己不要在一棵树上吊死,结果... 在树林里迷路了
|
| 6 | 穿别人的鞋,走自己的路,让他们找去吧
|
| 3 | 带翅膀的不一定是天使,有时候是鸟人
|
| 10 | 低头要有勇气,抬头要有底气
|
| 5 | 你不可能让所有人满意,因为不是所有的人都是人
|
| 1 | 我本将心向明月,奈何明月只欠日
|
| 2 | 信春哥,考本科 |
| 7 | 做爱做的事,交配交的人
|
| 4 | 做人的最低奋斗目标:农妇、山泉、有点田
|
+----+--------------------------------------------------------+
10 rows in set (0.00 sec)
这就是我们要的答案了。貌似还有其他的方法,大家知道的请慷慨下。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
百度非官方 的最新文章:百度分享按钮功能内测,需邀请码开通