V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gosky
V2EX  ›  问与答

怎么让 mysql 将中文数字排序?

  •  
  •   gosky · 289 天前 · 1092 次点击
    这是一个创建于 289 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如有下面几行:




    要求返回:




    utf8mb4_unicode_ci 已经试过了,不符合需求
    11 条回复    2023-07-13 19:51:11 +08:00
    Morii
        1
    Morii  
       289 天前
    数量不大的话 case when
    LeegoYih
        2
    LeegoYih  
       289 天前
    1.加一列阿拉伯数字
    2.维护一个中文和阿拉伯数字映射表,join order
    BiChengfei
        3
    BiChengfei  
       289 天前
    自定义排序
    ORDER BY FIELD(field ,str1 ,str2 ,str3 ,str4……) DESC
    tool2d
        4
    tool2d  
       289 天前
    写个函数把一二三替换成全角的123,这个在二进制编码上市连续的,就可以直接排序。
    SpMozzi
        5
    SpMozzi  
       289 天前
    select crc32(字段),字段 from t order by 1
    SpMozzi
        6
    SpMozzi  
       289 天前
    select * from a;
    +--------+
    | number |
    +--------+
    | 三 |
    | 一 |
    | 二 |
    +--------+
    select crc32(number),number from a order by 1;
    +---------------+--------+
    | crc32(number) | number |
    +---------------+--------+
    | 2416838398 | 一 |
    | 2878220375 | 二 |
    | 3922902618 | 三 |
    +---------------+--------+
    hsfzxjy
        7
    hsfzxjy  
       289 天前 via Android
    @SpMozzi crc32 这个什么原理啊?
    SpMozzi
        8
    SpMozzi  
       289 天前
    @hsfzxjy crc32 主要是对数据库的数据做简单校验,可以快速校验数据
    pkoukk
        9
    pkoukk  
       289 天前
    有 一万三千八百 这样的数么?
    有的话建议你再搞一列存阿拉伯数字吧
    adoal
        10
    adoal  
       289 天前
    #9 问的是关键。只是一位中文数字,还是中文数,做法完全不一样的。
    hsfzxjy
        11
    hsfzxjy  
       289 天前 via Android
    @SpMozzi 那 crc 的结果为什么就是汉字数字的序呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2982 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:12 · PVG 22:12 · LAX 07:12 · JFK 10:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.