Denna situation kan uppstå om ditt invoice_number
lagras som en textkolumn t.ex. varchar(10)
. I så fall, baserat på alfabetisk ordning, kommer 9 att vara det maximala värdet.
Helst bör du lagra värden som du vill utföra numeriska operationer på som numeriska datatyper, t.ex. int
. Men om du av någon anledning inte kan ändra kolumndatatyp kan du prova att casta kolumnen innan du använder MAX
, som så:
select max (convert(invoice_number, signed integer)) as maxinv from invoice
OBS:Jag nämner specifikt "värden som du vill utföra numeriska operationer på" eftersom det finns fall där den inmatade texten är helt och hållet numerisk, till exempel telefonnummer eller kanske kreditkortsnummer, men det finns inget scenario där du skulle vilja lägga till 2 telefonnummer, eller ta kvadratroten av ett kreditkortsnummer. Sådana värden bör lagras som text.