如何以数字方式而不是按字典顺序对数据进行排序?
100_10A
100_10B
100_10C
100_11A
100_11B
100_11C
100_12A
100_12B
100_12C
100_13A
100_13B
100_13C
100_14A
100_14B
100_14C
100_15A
100_15B
100_15C
100_16A
100_16B
100_16C
100_1A
100_1B
100_1C
100_2A
100_2B
100_2C
100_3A
100_3B
100_3C
100_4A
100_4B
100_4C
100_5A
100_5B
100_5C
100_6A
100_6B
100_6C
100_7A
100_7B
100_7C
100_8A
100_8B
100_8C
100_9A
100_9B
100_9C
select generalcolum from mytable order by blockid, plotid ASC
我需要的是这种排序顺序
100_1A
100_1B
100_1C...
...
...
100_10A
100_10B
100_10C
在某种程度上我需要做的是在排序发生之前添加零,以便我可以按照我想要的顺序获取它们。
有两个列,一个存储100(下划线前面的数字),另一个存储下划线后面的值。
我的sudo废话选择
select thiscolum this table
order by blockid, plotid(+1 zero to prefix if len(plotid) < 2)
例如,如果绘图值为1A,为了进行最佳排序,我需要将其视为01A,以便它在10A之前。
答案 0 :(得分:7)
order by length(blockid), blockid, length(plotid), plotid