MySQL 按带数字的字符串排序

标签 mysql sql-order-by collation

我有诸如 M1 M3 M4 M14 M30 M40 等字符串(实际上是字母后的任何 2-3 位整数) 当我执行“ORDER BY name”时,返回:

M1、M14、M3、M30、M4、M40

当我想要的时候:

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

有什么想法吗?

最佳答案

您可以在 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)

关于MySQL 按带数字的字符串排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12097368/

相关文章:

MySQL:无法添加或更新子行

MySQL 表由于某种原因递增 10

mysql - 将外国添加到我的表中

c# - 如何使用 O(n) 中的 LINQ 根据特定顺序查找第一项?

mysql - 当我的整个应用程序都使用 UTF-8 时,我应该使用哪种排序规则?

c# - 使用 NHibernate 函数通过 QueryOver 过滤结果

mysql - 按选择结果组添加排名列

c# - 将自己的 IComparer<T> 与 Linq OrderBy 结合使用

mysql多重排序

database - 将现有 Kentico 数据库迁移到 Azure SQL - 排序规则不匹配