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 發佈!排序

相關文章
相關標籤/搜索