【发布时间】:2011-02-20 03:27:02
【问题描述】:
在 SELECT 语句中,我有一个带有 ORDER BY DESC 的 varchar 列。本栏目数据示例:
1234
987
12-a
13-bh
MySQL 会返回类似于以下内容的选择:
987
12-a
1234
13-bh
它将三个字符长的结果放在四个字符长的结果之前,依此类推。我希望它忽略长度,只对“-”字符之前的数字进行排序。有没有我可以在 IF() 中像 SUBSTRING 一样订购的东西,它会删除以“-”字符开头的一行中的所有数据,以便我可以将其转换为整数?
【问题讨论】:
-
... ORDER BY CAST(SUBSTR(yourfield, 0, LOCATE('-', yourfield)) AS INTEGER)将是一个很好的起点。如果字段中没有“-”,它将失败,因为您将执行 0 长度的子字符串。
标签: mysql sql-order-by