时间:2015-11-24 21:54:49

标签: mysql sql sql-order-by

使用-排序时,有没有办法删除aORDER BY等字符?我问,因为我正在使用order by LENGTH(name), name 这让我接近但不对劲。输出如下:

8.2-11 8.2-12 8.2-13 8.2-14 8.2-13-A

我明白这一点因为8.2-13-A比8.2-13长,所以最后会是这样。我可以忽略所有特殊字符和字符,这样两个8.2-13就会一个接一个吗?

1 个答案:

答案 0 :(得分:0)

SELECT Value, 
SUBSTRING_INDEX(Value, '.', 1) as R1, 
SUBSTRING_INDEX(SUBSTRING_INDEX(`Value`, '.', -1), '-', 1) as r2, 
if(concat('',(SUBSTRING_INDEX(Value, '-', -1)) * 1) =0, SUBSTRING_INDEX(SUBSTRING_INDEX(`Value`, '-', -2), '-', 1),  SUBSTRING_INDEX(Value, '-', -1))  as r3,
if(concat('',(SUBSTRING_INDEX(Value, '-', -1)) * 1) = 0, SUBSTRING_INDEX(Value, '-', -1),  '')  as r4
FROM Table1 
Order by lpad(r1,2,0), lpad(r2,2,0), lpad(r3,2,0), r4

SQL FIDDLE