1. 程式人生 > 其它 >MySQL為什麼不支援中文排序?

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;


從圖中可以看出,排序是不生效的

如果要按照中文排序。需要對欄位編碼進行轉換,如下操作:

select * from area_code order by CONVERT(province_name USING gbk);

可以看到,轉成gbk方式就可以排序了,原因是在gbk字符集下,排序規則支援中文排序,如下圖:

因此說,MySQL不支援中文排序,可以說對,也可以說不對。

本文由部落格一文多發平臺 OpenWrite 釋出!