忽略

2015-11-24 121 views
0

从字符串命令字是否有删除像-a字符使用ORDER 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的是右后对方?

+0

我还没有使用它,但MySQL有一个使用正则表达式'REGEXP'功能。如果您需要使用此功能帮助你可以读到它[这里](http://dev.mysql.com/doc/refman/5.7/en/regexp.html#operator_regexp)或类似的网站。 –

回答

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

+0

这工作的大部分,但现在的顺序是关闭的长度如此这般:'8.2-1,8.2-10,8.2-11,8.2-2,8.2-20,8.2-24,8.2-24-A, 8.2-3'等。 – Packy

+0

啊,当然,我更新了我的答案。 –