我有一个mysql_query
SELECT * FROM table ORDER BY CAST(row AS DECIMAL)
并想要更改排序方向。 我尝试了 ASC 和 DESC 但两者都返回完全相同的排序方向。
我该如何度假?
谢谢,问候
儒略
答案 0 :(得分:1)
那应该有用。您是否尝试过显示CAST(行AS DECIMAL)产生的内容?
粘贴您尝试排序的数据示例。也许你有空值或者数字不适合十进制类型。
您使用的是哪个版本的mysql?也许原因是这个(来自mysql帮助):
存储格式的更改也意味着不再使用DECIMAL列 支持允许值大于的非标准扩展 列定义隐含的范围。
答案 1 :(得分:1)
我相信你可以在SELECT和ORDER BY那个新列中进行转换。下行当然你会在你的回复中得到一个额外的列,但是如果那个额外的列不会影响任何东西那么一切都很好。
SELECT *, CAST(row AS DECIMAL(5,2)) AS tempCol FROM table ORDER BY tempCol
此外,您的DECIMAL应该理想地指定其精度。 =)
http://dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html
的更多详情答案 2 :(得分:1)
如果您的row
列中只有一个_
字符,其中部分字母为字母,而部分为数字后,则可以使用:
SELECT
*
, SUBSTRING_INDEX(row, '_', 1) AS FirstPart
, CAST(SUBSTRING_INDEX(row, '_', -1) AS UNSIGNED) AS SecondPart
FROM
TableX
ORDER BY
FirstPart
, SecondPart