Mysql自然顺序

标签 mysql sql-order-by

我有一个专栏:

1 TB
1.5 TB
2 TB
3 TB
16 GB
32 GB
64 GB
128 GB
256 GB
320 GB
500 GB
512 GB
750 GB

我希望 1 TB、1.5 TB、2 TB 和 3 TB 出现在最后。

如何做到这一点?

最佳答案

假设您只有 TBGB:

order by (case when col like '%GB' then 1
               when col like '%TB' then 2
          end),
         col + 0 asc

这按 GB 排序。第二个将列转换为数字并按数字排序。

关于Mysql自然顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976188/

相关文章:

mysql - 为什么我使用这些 HQL 查询得不到任何数据?

php - Mysql Order by Tweak

MySQL - 从一组几个可能的时间戳中选择最近的日期?

mysql - SQL UNION ORDER BY DATE 从最新到最旧

mysql - ORDER BY 第一个 OR 条件为 true

php - CDbCommand 未能执行 SQL 语句。?

java - 如果没有主机模式,从 docker 到 localhost 的 mysql 的 jdbc url 无法工作

mysql - 从 mysql 数据库返回 VB.Net 中当前插入行的自动递增 ID 号

java - JPA @OrderBy 在 @ElementCollection 中不起作用

php - 如何从 MySQL 中的列中选择总值?