MySQL 对中文进行拼音排序

文章目录

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

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

    这是 golang gorm 的写法。

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

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

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

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

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

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式