网管之家---网络爱好者的博客

mysql数据库中文排序问题解决

最近做一个工具,用到了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)

这就是我们要的答案了。貌似还有其他的方法,大家知道的请慷慨下。

把本页收藏到QQ书签 标签:mysql中文排序
分类:网络技术| 发布:wangguanzhijia| 查看: | 发表时间:2020-6-8
原创文章如转载,请注明:转载自网管之家 http://www.wangguanzhijia.com/
本文链接:http://www.wangguanzhijia.com/post/71.html

相关文章

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

4 #蓝魔力
蓝魔力 做爱做的事
3 #遥控飞机
遥控飞机 来了 要支持下了~~
http://www.17toy.cn 2020-6-9 10:12:34 【REPLY】
2 #狐臭怎么治疗
狐臭怎么治疗 路过 支持了 不错的技术
http://www.spmtw.com 2020-6-9 10:12:15 【REPLY】
1 #百度非官方
百度非官方 我也想知道将中文按拼音排序的方法。