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

Php MySQL先按字符顺序排列字符串,然后按数字顺序排列,php,mysql,Php,Mysql,我有下面这样的字符串,当我按id_代码订购时,我得到 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.

我有下面这样的字符串,当我按id_代码订购时,我得到

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和正则表达式,但没有得到上面的结果

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

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)

这不是一个理想的问题。请详细说明你的问题,并附上一些细节或剪贴的代码、图片或日志。请仔细解释你的问题。我编辑了我的问题,我想现在它更清楚了,谢谢。很好,但当我的字符较少时,如DEE.1 DEE.10 DEE.11 DEE.12 DEE.2是否可以将字符串拆分为单独的列?然后您可以简单地使用order by column1、column2。。。。