我在 MySQL 表中有一个 VARCHAR 列,它只存储数字。当我运行查询
从 mytable 中选择 MAX(title_no) 作为 title_no我得到 999,但表中有更多记录,title_no 列中的值 > 999。
我不允许将列从 varchar 更改为 int。请帮助我获得正确的nuber。
谢谢
MAX(CAST(title_no AS SIGNED))
.
你可以用这个——
SELECT MAX(title_no * 1) AS title_no FROM mytable
试试下面的另一种方式。
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
您需要转换为数字类型,否则它将被排序为字符串,而不是数字:
SELECT MAX(CAST(title_no AS SIGNED))
AS title_no
FROM mytable;
您需要在这里使用CAST
。因为它被视为字符串而不是数字。因为您声明为varchar
MAX(CAST(title_no AS SIGNED))
这是因为它将是字符比较,因为您的字段是 varchar 类型。您需要将其转换为整数。看到这个SQL FIDDLE