我有下面的字符串,当我做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,正则表达式,但我无法得到如上所示的结果
答案 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)