我有一个表格,其中包含包含此数据的字段traffic_num(varchar
)
A100
A586
A4594
A125
A2
A492
现在我想按升序对数据进行排序。如果traffic_num仅包含数字(没有字母A
),那么我可以将varchar
转换为integer
CAST(traffic_num as SIGNED INTEGER) ASC
。但是在这种情况下该怎么做?
答案 0 :(得分:1)
您可以使用substr
按第一个字母字符排序,然后按照后面的数字排序。
select * from tablename
order by substr(traffic_num,1,1), cast(substr(traffic_num,2) as signed integer)
答案 1 :(得分:1)
执行此操作的一种简单方法是按长度排序,然后按值排序:
order by length(traffic_num), traffic_num
当值为整数时,此方法有效。