首页 文章

mySQL CAST和ASC / DESC

提问于
浏览
0

我有一个mysql_query

SELECT * FROM table ORDER BY CAST(row AS DECIMAL)

并希望更改排序方向 . 我尝试过ASC和DESC但两者都返回完全相同的排序方向 .

我该如何度假?

谢谢,问候

朱利安

3 回答

  • 1

    这应该工作 . 您是否尝试显示CAST(行AS DECIMAL)产生的内容?

    粘贴您尝试排序的数据示例 . 也许你有空值或者数字不适合十进制类型 .

    你正在使用什么版本的mysql?也许原因是这个(来自mysql帮助):

    存储格式的更改还意味着DECIMAL列不再支持允许值大于列定义隐含的范围的非标准扩展 .

  • 1

    我相信你可以在SELECT和ORDER BY那个新列中进行转换 . 下行当然你会在你的回复中得到1个额外的列,但是如果那个额外的列不会影响任何东西那么一切都很好 .

    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

  • 1

    如果你的 row 列中只有一个 _ 字符,其中部分字母前是字母,而部分是数字之后,这将起作用:

    SELECT 
          *
        , SUBSTRING_INDEX(row, '_', 1) AS  FirstPart
        , CAST(SUBSTRING_INDEX(row, '_', -1) AS UNSIGNED) AS SecondPart
    FROM 
          TableX
    ORDER BY
          FirstPart
        , SecondPart
    

相关问题