V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
gosky
V2EX  ›  问与答

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

  •  
  •   gosky · Jul 13, 2023 · 1946 views
    This topic created in 1018 days ago, the information mentioned may be changed or developed.
    比如有下面几行:




    要求返回:




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