从varchar列中获取MySQL中的最大值不超过999

时间:2013-05-14 05:13:33

标签: mysql sql

我在MySQL表中有一个VARCHAR列,它只存储数字。当我运行查询

SELECT MAX(title_no) as title_no from mytable 
时,我得到了999但是表中有更多的记录值为> title_no列中的999。

我不允许将列从varchar更改为int。请帮助我找到正确的nuber。

由于

6 个答案:

答案 0 :(得分:6)

MAX(CAST(title_no AS SIGNED))

答案 1 :(得分:1)

你可以使用这个 -

SELECT MAX(title_no * 1) AS title_no FROM mytable 

答案 2 :(得分:0)

请尝试以下方式。

SELECT  MAX(CAST(title_no AS SIGNED)) AS title_no FROM  mytable;

OR

SELECT MAX(CONVERT(title_no,UNSIGNED INTEGER)) FROM mytable;

OR

SELECT MAX(title_no * 1) AS title_no FROM mytable 

答案 3 :(得分:0)

您需要cast到数字类型,否则它将被排序为字符串,而不是数字:

SELECT  MAX(CAST(title_no AS SIGNED)) 
AS title_no 
FROM  mytable;

答案 4 :(得分:0)

你需要在这里使用CAST。因为它被视为字符串而不是数字。因为你声明为varchar

MAX(CAST(title_no AS SIGNED))

答案 5 :(得分:0)

这是因为它是字符比较,因为你的字段是varchar类型。您需要将其转换为Integer。见SQL FIDDLE