在做中文排序时,我们希望查询出来的记录能够按照汉语拼音即英文的26个字母排序,但是 utf8mb4 字符集是外国人弄的,不是按照汉语拼音的顺序排列的。
因此,我们需要将要排序的字段把编码设定为 GBK 再进行排序。
环境
K | V |
版本 | 5.7.28 |
字符集 | utf8mb4 |
解决方案
- mysql 中对字符的转码支持的不错,
convert()
函数,直接搞定
缺点 :不能解决多音字的问题
比如: 重庆chong qing
使用convert()
函数转换后,发音为zhong qing
SQL实验
- 正常查询
SELECT user_desc FROM user_table ORDER BY user_desc DESC;
- utf8mb4 转 gbk 编码 按字母升序
SELECT user_desc FROM user_table ORDER BY CONVERT(user_desc USING gbk);
- utf8mb4 转 gbk 编码 按字母降序
SELECT user_desc FROM user_table ORDER BY CONVERT(user_desc USING gbk) DESC;
- utf8mb4 转 utf8mb4 编码 按字母降序(同
1
)
SELECT user_name FROM user_table ORDER BY CONVERT(user_name USING utf8mb4) DESC;