当mysql使用utf8、utf8mb4编码时,如果直接使用 order by 对中文字段排序,排序结果不正确。
需要将字段先转换成gbk编码再排序:
CONVERT(expr USING transcoding_name)
CONVERT()提供一个在不同字符集之间转换数据的方法。
mybtis-plus:
orderByAsc("convert(" + User.NAME + " using gbk)")
sql:
SELECT * FROM user ORDER BY CONVERT(`name` USING gbk)
当使用MySQL的UTF8和UTF8MB4编码时,直接对中文字段进行ORDER BY操作可能会导致排序错误。为确保正确排序,可以使用CONVERT函数将字段转换为GBK编码后再进行排序。例如,在MyBatis-Plus中,可以使用orderByAsc('convert(' + User.NAME + ' using gbk)')来实现。在SQL查询中,对应的语句为SELECT * FROM user ORDER BY CONVERT(`name` USING gbk)。
2464

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



