mysql order varchar field as integer

两盒软妹~` 提交于 2020-01-11 19:57:49

问题


I have a varchar field in my table and I want to sort it. But I need to handle this field as integer. Meaning if sort as text the order is "19,2,20" but I want to get the right order "2,19,20".

Can anyone help me?


回答1:


I somehow didn't manage to run the query with CAST. I was always getting Error Code: 1064 near "DECIMAL" (or other numeric type that I chose). So, I found another way to sort varchar as numbers:

SELECT *
FROM mytable
ORDER BY ABS(mycol)

A bit simpler and works in my case.




回答2:


SELECT  *
FROM    mytable
ORDER BY
        CAST(mycol AS DECIMAL)



回答3:


Here is the solution

SELECT * FROM MyTable ORDER BY ABS(MyCol);



回答4:


All other answers use ABS, which converts the values into absolute (positive) values, assuming that the integers are positive. A better solution would be to use * 1:

SELECT * FROM mytable ORDER BY mycol * 1

This to prevent casting negative numbers into positive ones. Inspired by: mysql sort string number




回答5:


You can ABS() for this purpose. ABS() is a mathematical function that returns the absolute (positive) value of the specified expression. So query will be something like this

SELECT * FROM MyTable ORDER BY ABS(MyCol);



回答6:


You Can Order varchar field using this code according to your required

SELECT * FROM mytable ORDER BY ABS(mycol)


来源:https://stackoverflow.com/questions/1625166/mysql-order-varchar-field-as-integer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!