MySQL 将字符串排序为整数,整数优先

标签 mysql innodb

SELECT code
FROM lock
ORDER BY code * 1

这将返回以下结果:

|code| 
|T6  |
|X30 |  
|4   |

我需要更改查询,以便它按以下顺序返回 code 行:

|code|
|4   |
|T6  |
|X30 |

code 列的类型为 VARCHAR,因此查询中的 hacky 转换。有什么想法吗?

最佳答案

SELECT 
*
FROM t
ORDER BY 
CAST(code AS signed) > 0 DESC,
code

关于MySQL 将字符串排序为整数,整数优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299584/

相关文章:

mysql - 如何调试 MySQL 上的锁定等待超时?

mysql - 如何使用索引优化 InnoDB 上的 COUNT(*) 性能

php - 如何从 PHP 中的两个关联数组更新 MySQL 数据库

php - 将 MySql 表导出为 CSV?

php - Bootstrap 表使用连续数据从 MySQL 轮询更新

PHP switch case + PDO 更新数据库

linux - MySQL Insert 操作在 Linux RDS 服务器上很慢

mysql - mysql 在处理时会锁定所有表吗

mysql - 如果发生 MySQL/InnoDB 'lock wait timeout',锁在空闲时是否仍会被授予?

php - 使用 OR 和 LIKE % 查询 PHP foreach?