MySQL为何不支持中文排序?

前言

或许都知道,MySQL不支持中文排序,这样的说法能够说对也能够说也不对。接下来咱们分析一下:sql

首先执行命令,查看编码集:

SHOW VARIABLES LIKE 'character_set%';
复制代码

能够看到字符集是utf8mb4,这个字符集是市面上比较使用很是多的字符集markdown

file

咱们再看下,这个字符集对应的排序规则有哪些?

show collation like 'utf8mb4%';
复制代码

file 图中能够看到,utf8mb4有不少的排序规则,好比说通用的uft8mb4_general_ci,瑞典文比较规则utf8mb4_swedish_ci等等,可是就是没有中文的比较规则,这也是为何utf8mb4字符集不支持中文排序的缘由。oop

事例:编码

select * from area_code order by province_name;
复制代码

file 从图中能够看出,排序是不生效的spa

若是要按照中文排序。须要对字段编码进行转换,以下操做:3d

select * from area_code order by CONVERT(province_name USING gbk);
复制代码

file

能够看到,转成gbk方式就能够排序了,缘由是在gbk字符集下,排序规则支持中文排序,以下图: filecode

所以说,MySQL不支持中文排序,能够说对,也能够说不对。orm

本文由博客一文多发平台 OpenWrite 发布!排序

相关文章
相关标签/搜索