MySQL先按字符顺序排序,然后按数字排序

时间:2018-03-20 16:08:05

标签: php mysql

我有下面的字符串,当我做ORDER BY id_code时我得到

GDA.DSAETA.YSTA.1
GDA.DSAETA.YSTA.2
GDAD.DAD.YM.1
GDAD.DAD.YM.10
GDAD.DAD.YM.11
GDAD.DAD.YM.2
GDAD.DAD.YM.3

但我需要的是按字母和数字首先从字符开始,然后是下面的数字

来获得结果顺序
GDA.DSAETA.YSTA.1
GDA.DSAETA.YSTA.2
GDAD.DAD.YM.1
GDAD.DAD.YM.2
GDAD.DAD.YM.3
GDAD.DAD.YM.10
GDAD.DAD.YM.11

我尝试使用CAST,LENGTH,正则表达式,但我无法得到如上所示的结果

1 个答案:

答案 0 :(得分:0)

您可以使用SUBSTRING_INDEX按点分解字符串。最后一个字符串,您必须强制转换为整数才能获得正确的顺序。

select * from tmp order by 
SUBSTRING_INDEX(id_code, '.', 1), 
SUBSTRING_INDEX(SUBSTRING_INDEX(id_code, '.', 2), '.', -2),
SUBSTRING_INDEX(SUBSTRING_INDEX(id_code, '.', -2), '.', 1),
CAST(SUBSTRING_INDEX(id_code, '.', -1) AS UNSIGNED)