mysql用数字排序varchar

时间:2010-12-13 21:01:52

标签: mysql sql-order-by

如何以数字方式而不是按字典顺序对数据进行排序?

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之前。

1 个答案:

答案 0 :(得分:7)

order by length(blockid), blockid, length(plotid), plotid