http://7567567.blog.51cto.com/706378/619244
如果在mysql中使用字符集为utf8,想要对中文字段用order by chinese_field 排序,那么出来的顺序并不是按照拼音排序的,不是我们想要的结果。
解决方法:
1、改变字符编码为gbk。
DD
2、不想改变编码的话,可以用如下方法:
对中文字段使用gbk编码排序:
SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;
当然这需要你安装mysql时安装了gbk字符集,不然会报错:#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)
上面的原因是插入数据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)
***************************
对于改字符集的方法,加一个库默认字符集gbk,建表,然后排序,得到的就是拍好的
************************************
一些相关语句
1、使用SHOW CHARACTER SET语句列出数据库中可用的字符集:
mysql> SHOW CHARACTER SET;
2、要想列出一个字符集的校对(Collation)规则,使用SHOW COLLATION语句。
例如,要想查看latin1(“西欧ISO-8859-1”)字符集的校对规则,使用下面的语句查找那些名字以latin1开头的校对规则:
mysql> SHOW COLLATION LIKE 'latin1%';
3.查看数据表的字符集
mysql> show create table mytable;
这个命令也可以查看建这个表的SQL语句。
分享到:
相关推荐
代码如下: select areaName from area order by convert(areaName USING gbk) COLLATE gbk_... 您可能感兴趣的文章:mysql的中文数据按拼音排序的2个方法mysql如何按照中文排序解决方案MySQL按照汉字的拼音排序简单实例
本文实例讲述了PHP与MYSQL中UTF8编码的中文排序方法,分享给大家供大家参考。具体实现方法如下: 一般来说,中文共有三种排序方式: 1.根据拼音排序; 2.根据笔画排序; 3.根据偏旁排序。 系统的默认排序方式为拼音...
批量修改mysql数据库、表、字段编码(gbk到utf8php脚本) 可以把整个数据库、表、字段编码全部从gbk_chinese_ci 到 utf8_general_ci 转换,不会乱码哦 狂拽吊炸天!!!
下面小编就为大家带来一篇全面了解mysql中utf8和utf8mb4的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
mysql5.7配置文件设置UTF8编码。 使用此文件直接替换MySQL5.7原配置文件即可生效。
主要介绍了Mysql中文汉字转拼音的实现,并且每个汉字会转换全拼,使用Mysql自定义函数实现,需要的朋友可以参考下
主要介绍了MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
Linux 下 设置mysql数据库为utf8编码的方法
utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。 这篇文章给大家介绍了更改MySQL数据库的编码为utf8mb4的相关知识,感兴趣的朋友一起看看吧
mysql获取字段中内容
1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行。用gbk和gb2312可以。这跟几种格式的编码有关系。gbk和gb2312本身的编码就是用拼音排序的。 代码如下 function utf8_array_asort...
UTF8字符编码:windows编码、文本工具的字符编码、Java编译器的字符编码、MySql的UTF8编码
主要介绍了mysql的中文数据按拼音排序的2个方法,用于一些特殊环境,需要的朋友可以参考下
163、一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。解决方法是在发送查询前执行一下下面这句:
mysql数据库utf8转utf8mb4工具,将mysql数据库从utf8字符集转换为utf8mb4字符集,或将数据库从 utf8mb4字符集 转换为 utf8字符集。
Mysql支持emoji 表情符号 升级编码为UTF8MB4
mysql数据库utf8转utf8mb4工具.sql
出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。 解决方法: 对于包含中文的字段...