【问题标题】:Mysql Natural sorting in varchar fieldMysql自然排序在varchar字段中
【发布时间】:2017-05-28 13:04:16
【问题描述】:

有没有办法仅按数字对带有数字字段的字符串进行排序 我有这样的价值观

subject_code    
DE 312  
DE 313  
DE 315  
Eng 311   
COMP 314

可以这样排序吗

subject_code 
Eng 311   
DE 312  
DE 313   
COMP 314    
DE 315

我试过了

order by SOUNDEX(subject_code),LENGTH(subject_code),subject_code

但它没有按预期工作。

感谢您的任何帮助和建议。

【问题讨论】:

    标签: mysqli natural-sort


    【解决方案1】:

    针对您的情况的一种解决方法是使用字符串操作来获取数字主题代码并将其用于排序。

    SELECT
        subject_code
    FROM yourTable
    ORDER BY
        CAST(SUBSTR(subject_code,
                    INSTR(subject_code, ' ') + 1) AS UNSIGNED)
    

    但是,您确实应该将文本和数字代码存储在不同的列中。

    输出:

    演示在这里:

    Rextester

    【讨论】:

    • 完美.. 谢谢我应该用 int 和 string 分隔 col
    猜你喜欢
    • 2011-06-08
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多