mysql - 按数字顺序排列字符串

标签 mysql sql sql-order-by

比方说,我有一个表,我想用一些字符串和大小按字段排序。当我使用 ORDER BY size 时,它会得到如下内容:

size 100
size 105
size 110
size 115
size 85
size 90
size 95

每行的字符串可以不同,这只是示例,当有相同的字符串时 - size。我想返回:

size 85
size 90
size 95
size 100
size 105
size 110
size 115

我知道,可以使用 ORDER BY CAST(size AS UNSIGNED) 完成按数字字符串的排序,但是当它不是数字字符串,但字段是带数字的字符串时,该怎么做?

最佳答案

我的简单方法是使用长度作为键:

order by length(size), size

或者,使用 substring_index():

order by substring_index(size, ' ', 1),
         substring_index(size, ' ', -1) + 0

+ 0 进行静默转换,将第二个值转换为数字。

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

相关文章:

SQLite 按列排序差异

php - 显示按类别分组的结果

SQL REPLACE 语句替换部分数字而不是全部

php - 如何在 PHP 中使用计数?

mysql - 如何从另一个MySQL中减去一行

mysql - 为 ORDER BY 强制使用索引是否更好?

php - 使用 php 将 mysql 日期(日期时间)转换为更好的日期格式

mysql - 我怎样才能在 MySql 中获取标识列的种子值

mysql - 是否存在始终返回零结果的 SQL 查询?

MySQL 权重评分