MySQL按字母顺序排列

Ada*_*rle 11 mysql collation sql-order-by

我有字符串如M1 M3 M4 M14 M30 M40等(字母后面的任何int 2-3位数)当我执行"ORDER BY name"时,它返回:

M1, M14, M3, M30, M4, M40

当我想要:

M1, M3, M4, M14, M30, M40 它将整个事物视为字符串,但我想将其视为字符串+ int

有任何想法吗?

roc*_*000 12

您可以在ORDER BY中使用SUBSTR和CAST AS UNSIGNED/SIGNED:

SELECT * FROM table_name ORDER BY
    SUBSTR(col_name FROM 1 FOR 1),
    CAST(SUBSTR(col_name FROM 2) AS UNSIGNED)
Run Code Online (Sandbox Code Playgroud)