mysql - 在mysql中将varchar列排序为数字,空值作为底部

标签 mysql sorting numeric varchar

我正在尝试对 mysql 查询中的一列进行排序,该列的类型为 varchar,但可能/可能没有数值。

for example it may have the values

2012-10
2012-41
2012-1

which should be sorted as follows:
2012-1
2012-10
2012-41

but if the values are :
M-1
M-13
M-5

it should be sorted as :
M-1
M-5
M-13

and if null values are present it should be last.

不知道是否可行。请帮忙

最佳答案

如果您想按连字符后的数字进行数字排序,请使用:

ORDER BY column IS NOT NULL, SUBSTRING_INDEX(column, '-', 1), CAST(SUBSTRING_INDEX(column, '-', 2) AS DECIMAL)

column IS NOT NULL 最后对空列进行排序,CAST() 表达式按数字对其余列进行排序。

关于mysql - 在mysql中将varchar列排序为数字,空值作为底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074423/

相关文章:

python - 从 Python 列表中查找最近的 5 个日期

c# - 检查字符串是否只有数字和一个可选的小数点。

c# - byte[] 到无符号 BigInteger?

PHP $_POST 不通过 h​​tml 表单保存在 mysql 上

php - 删除 mysql 搜索中区分大小写的内容

java - 随机调用向远程和本地数据库插入、检索和更新 mysql

结果可以在不同列中的最后 x 个结果的 MySQL sum avg

java - 对整数数组进行排序,同时保持与字符串数组的关系

java - 尝试为给定字段上的给定类创建比较器时出错

asp.net-mvc - 允许在文本框中输入不带前导零的内容