MySQL 对中文进行拼音排序

更新日期: 2025-02-27 阅读次数: 72 字数: 376 分类: MySQL

我想将 MySQL 返回的中文数据按照拼音进行排序并返回,例如,省份列表:

Order("CONVERT(province USING gbk) COLLATE gbk_chinese_ci")

这是 golang gorm 的写法。

但是会有一个问题,就是对于多音字的处理。看一下返回:

    "安徽省",
    "北京市",
    "福建省",
    "甘肃省",
    "广东省",
    "广西壮族自治区",
    "贵州省",
    "海南省",
    "河北省",
    "河南省",
    "黑龙江省",
    "湖北省",
    "湖南省",
    "吉林省",
    "江苏省",
    "江西省",
    "辽宁省",
    "内蒙古自治区",
    "宁夏回族自治区",
    "青海省",
    "山东省",
    "山西省",
    "陕西省",
    "上海市",
    "四川省",
    "天津市",
    "西藏自治区",
    "香港特别行政区",
    "新疆维吾尔自治区",
    "云南省",
    "浙江省",
    "重庆市"

重庆市为啥会排在最后呢?

想了一下,大概是重这个字是读音字,被翻译成了 zhong 就排在最后了。。。🥲

DeepSeek 给了一个解决方案,在数据库中直接存储一份省份对应的拼音字段来解决问题,嗯,也是个办法

微信关注我哦 👍

大象工具微信公众号

我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式