所以我有一堆varchars,我需要以某种方式排序,首先是alpha,然后将以下数字视为整数(即A2将在A10之前)。这是主要的问题,然后我有一些像'A1M'之后的'sub'字母。不希望只是为了排序而添加一个新列,所以我想看看更复杂的ORDER BY语句是否能够处理这样的事情。
它们应该像这样排序:
A1
A1M
A2
A6
A6B
A9
A10
A15
A16
AS10
但它目前的排序方式如此(标准ORDER BY):
A1
A10
A15
A16
A1M
A2
A6
A6B
A9
AS10
答案 0 :(得分:0)
如果第一个字符是字母后跟数字,则可以执行以下操作:
order by left(col, 1),
substr(col, 2) + 0,
col
第一个键是第一个字母。第二个是信后面的数字。 + 0
是隐式转换,不会返回错误。最后一个关键是整个专栏。