我想从我的发票表中检索最大发票号,当我选择所有您可以清楚地看到最大发票号为“10”的记录时,它会返回以下内容。
select * from invoice
但是当我查询
select MAX(invoice_number) as maxinv from invoice
它返回“9”。这是为什么?
最佳答案
如果您的 invoice_number
存储为文本列,例如varchar(10)
。在这种情况下,根据字母顺序,9 将是最大值。
理想情况下,您应该将要对其执行数值运算的值存储为数值数据类型,例如整数
。但是,如果由于某种原因您无法更改列数据类型,您可以尝试在应用 MAX
之前强制转换列,如下所示:
select max (convert(invoice_number, signed integer)) as maxinv from invoice
注意:我特别提到“您要对其执行数字运算的值”,因为在某些情况下输入文本完全是数字,例如电话号码或信用卡号,但也有在任何情况下,您都不想添加 2 个电话号码,或者对信用卡号码求平方根。此类值应存储为文本。
关于mysql - MAX(Column) 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25360359/