Mysql varchar 字段中的自然排序

Mysql Natural sorting in varchar field

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

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

但它没有按预期工作。

感谢您的帮助和建议。

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

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

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

输出:

此处演示:

Rextester