在做中文排序时,我们希望查询出来的记录能够按照汉语拼音即英文的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;
本文探讨了在MySQL环境下,如何解决UTF8MB4字符集下中文排序的问题。通过将字段编码转换为GBK,可以实现按照汉语拼音的字母顺序进行排序,但此方法无法完美处理多音字。文中提供了具体的SQL实验示例。
1368

被折叠的 条评论
为什么被折叠?



