Mysql顺序排序,排序不正常

时间:2013-09-08 10:47:10

标签: php mysql codeigniter

我的表名为sth-1sth-2,......... sth-10sth-11等等。

我想按顺序对它们进行排序,但它会以1, 11, 12, .., 2,3的形式提取,依此类推,按asc顺序排序。

任何帮助表示赞赏

3 个答案:

答案 0 :(得分:2)

如果数字始终遵循 -

,这应该对你有用
SELECT   *
FROM     table
ORDER BY CAST(SUBSTRING(column,LOCATE('-',column)+1) AS SIGNED)

此原始查询来自

Sorting string column containing numbers in SQL?

根据您的需求

答案 1 :(得分:1)

这是因为你试图对字符串进行排序,而不是数字。

另一种方法是创建一个单独的int列,以便在排序时加快一点。

另一种方式就是这个:

SELECT * FROM `table` ORDER BY CAST(SUBSTRING(column,LOCATE('-',column)+1) AS SIGNED)

我个人更喜欢使用单独的列,因此您并不真正依赖名称格式。

答案 2 :(得分:0)

另一种方法是按长度排序,然后按字段排序:

order by char_length(col), col