如何订购MySQL VARCHAR结果

Sea*_*mIT 6 mysql sql-order-by

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

1234
987
12-a
13-bh

MySQL将返回如下所示的选择:

987
12-a
1234
13-bh

它在四个字符长的结果之前放置三个字符长的结果,依此类推.我希望它忽略长度,只是对' - 'char之前的数字进行排序.有没有什么东西我可以在IF()中像SUBSTRING一样进行ORDER,它会删除以' - '字符开头的行中的所有数据,这样我可以将CAST作为整数?

Ric*_*iwi 13

最简单的事情就是这样

SELECT *
FROM TBL
ORDER BY VARCHAR_COLUMN * 1;
Run Code Online (Sandbox Code Playgroud)

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

SELECT *, VARCHAR_COLUMN * 1
FROM TBL
ORDER BY VARCHAR_COLUMN * 1;
Run Code Online (Sandbox Code Playgroud)