1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > mysql8中文排序_mysql中utf8编码的中文字段按拼音排序

mysql8中文排序_mysql中utf8编码的中文字段按拼音排序

时间:2019-09-28 12:39:08

相关推荐

mysql8中文排序_mysql中utf8编码的中文字段按拼音排序

/orderbychinesefieldutf8/comment-page-2/

-08-24 17:36 by TomorrowMan | 分类: 技术, 数据库

如果在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、使用SHOWCHARACTERSET语句列出数据库中可用的字符集:

mysql>SHOWCHARACTERSET;2、要想列出一个字符集的校对(Collation)规则,使用SHOW COLLATION语句。

例如,要想查看latin1(“西欧ISO-8859-1”)字符集的校对规则,使用下面的语句查找那些名字以latin1开头的校对规则:

mysql>SHOW COLLATIONLIKE'latin1%';3.查看数据表的字符集

mysql>showcreatetablemytable;

这个命令也可以查看建这个表的SQL语句。

******************************

有空还是要看一下字符集的问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。