2010-04-19 97 views
0

我运行一个选择返回字母数字的结果,例如:PHP的自然顺序排序

ORDER BY CAST(mid(field_name, 6, LENGTH(class) -5) AS unsigned) 

ORDER BY filed_name + 0 ASC 

ABC-1 
ABC-2 
ABC-10 
SAM-1 
SAM-2 
SAM-10 
SAM-20 

我已经尝试使用

这有助于提出一些命令,但我似乎无法在-10之前订购-2

非常感谢

回答

1

如何

ORDER BY 
    LEFT(field_name, INSTR(field_name, '-') - 1), 
    CAST(
    SUBSTRING(field_name, INSTR(field_name, '-') + 1) AS INTEGER 
) 
+0

得到一个错误,这个 – 2010-04-19 12:36:16

+0

@Digital工艺工作室:这将是......哪个错误,到底是什么? – Tomalak 2010-04-19 13:07:32

+0

行:130错误:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在第4行的CAST(RIGHT('class',LENGTH('class') - INSTR('class',' - '))AS INTEGER' – 2010-04-19 13:40:13