3

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

从 mytable 中选择 MAX(title_no) 作为 title_no
我得到 999,但表中有更多记录,title_no 列中的值 > 999。

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

谢谢

4

6 回答 6

10
MAX(CAST(title_no AS SIGNED))

.

于 2013-05-14T05:16:41.320 回答
1

你可以用这个——

SELECT MAX(title_no * 1) AS title_no FROM mytable 
于 2013-05-14T05:22:04.827 回答
0

试试下面的另一种方式。

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

或者

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

或者

SELECT MAX(title_no * 1) AS title_no FROM mytable 
于 2013-05-14T05:17:34.700 回答
0

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

SELECT  MAX(CAST(title_no AS SIGNED)) 
AS title_no 
FROM  mytable;
于 2013-05-14T05:18:31.873 回答
0

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

MAX(CAST(title_no AS SIGNED))
于 2013-05-14T05:19:34.137 回答
0

这是因为它将是字符比较,因为您的字段是 varchar 类型。您需要将其转换为整数。看到这个SQL FIDDLE

于 2013-05-14T05:22:15.933 回答