这是我的 MySQL 表
当我执行以下查询时:SELECT MAX(Animal_ID) FROM info_table
我得到“9”
不应该是 10 吗?
我该如何解决这个错误?
谢谢!
我的猜测是它animal_id
被存储为字符字段而不是数字字段。如果你想要数字最大值,试试这个:
select max(animal_id + 0)
from info_table
当您在 MySQL 中将两个值相加并且一个是字符串时,初始数字字符(如果有)将转换为数字。
从您其他列中的示例数据来看,您已将所有列设置为 type VarChar
,即 text 。您看到的“异常结果”是这是一个坏主意的众多原因之一。
对一系列字符串进行排序通常按“字母”或“词法”顺序进行 - “b”在“z”之前,但不在“aaa”之前。完全由数字组成的字符串可能看起来像数字,但它们会像任何其他字符串一样排序 - 所以“1”在“2”之前,但任何以“1”开头的字符串也是如此,例如“1a”、“10”、 “100”。这通常不是您想要的。
与其解决这个问题和您将遇到的其他问题(例如日期字段),不如始终在每一列上使用正确的类型设置您的表格。