MySQL为什么不支持中文排序()
前言
或许都知道,MySQL不支持中文排序,这样的说法可以说对也可以说也不对。接下来我们分析一下:
首先执行命令,查看编码集:
SHOW VARIABLES LIKE 'character_set%';
可以看到字符集是utf8mb4,这个字符集是市面上比较使用非常多的字符集
文章图片
我们再看下,这个字符集对应的排序规则有哪些?
show collation like 'utf8mb4%';
文章图片
图中可以看到,utf8mb4有很多的排序规则,比如说通用的uft8mb4_general_ci,瑞典文比较规则utf8mb4_swedish_ci等等,但是就是没有中文的比较规则,这也是为什么utf8mb4字符集不支持中文排序的原因。
事例:
select * from area_code order by province_name;
文章图片
从图中可以看出,排序是不生效的
【MySQL为什么不支持中文排序()】如果要按照中文排序。需要对字段编码进行转换,如下操作:
select * from area_code order by CONVERT(province_name USING gbk);
文章图片
可以看到,转成gbk方式就可以排序了,原因是在gbk字符集下,排序规则支持中文排序,如下图:
文章图片
因此说,MySQL不支持中文排序,可以说对,也可以说不对。
推荐阅读
- 为什么你的路演总会超时()
- 财商智慧课(六)
- 吃了早餐,反而容易饿(为什么?)
- 为什么越花钱的人越有钱,越舍不得花钱的人却越穷()
- dubbo基本认识
- 为什么985/211的学生能胜任工作获得老板的青睐。
- 年轻人,干了孤独这杯酒
- 为什么孩子一定要学会可视化思维!
- 关于this的一些问题(1)
- 为什么有些女孩喜欢看玛丽苏爱情片()