mysql - 如何订购 MySQL VARCHAR 结果

标签 mysql sql-order-by

在 SELECT 语句中,我有一个带有 ORDER BY DESC 的 varchar 列。本栏数据示例:

1234
987
12-a
13-bh

MySQL 会返回类似下面的选择:

987
12-a
1234
13-bh

它将三个字符长的结果放在四个字符长的结果之前,依此类推。我希望它忽略长度,只对“-”字符之前的数字进行排序。有没有我可以在 IF() 中订购的东西,比如 SUBSTRING,它会删除以“-”字符开头的行中的所有数据,以便我可以将其转换为整数?

最佳答案

最简单的事情就是这样

SELECT *
FROM TBL
ORDER BY VARCHAR_COLUMN * 1;

要查看发生了什么,只需添加我用于排序的列

SELECT *, VARCHAR_COLUMN * 1
FROM TBL
ORDER BY VARCHAR_COLUMN * 1;

关于mysql - 如何订购 MySQL VARCHAR 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055049/

相关文章:

mysql自然排序给定数据

mysql - 如何通过从另一个表加入来更新 mysql 中的列?

mysql - 我如何获得注册号为 17015 的学生的科目平均分?

ruby-on-rails - Rails Active Admin 如何使用 2 列(来自关联的 1 列)进行 config.sort_order

mysql - 使用 order by 和 limit 的奇怪结果

python - 使用按查询排序的无序结果

带有自定义比较器的 Linq orderby 两列排序

php - 显示用户表和潜在客户表中的数据

php - 仅在控制台上拒绝 root@localhost 的 Laravel Artisan 访问

mysql - 合并三张表中的一个表字段为email