Denne situation kan opstå, hvis dit invoice_number
gemmes som en tekstkolonne f.eks. varchar(10)
. I så fald, baseret på alfabetisk rækkefølge, vil 9 være den maksimale værdi.
Ideelt set bør du gemme værdier, som du ønsker at udføre numeriske operationer på som numeriske datatyper, f.eks. int
. Men hvis du af en eller anden grund ikke kan ændre kolonnedatatype, kan du prøve at caste kolonnen, før du anvender MAX
, sådan:
select max (convert(invoice_number, signed integer)) as maxinv from invoice
BEMÆRK:Jeg nævner specifikt "værdier, som du vil udføre numeriske operationer på" fordi der er tilfælde, hvor inputteksten er helt numerisk, såsom telefonnumre eller måske kreditkortnumre, men der er ikke noget scenarie, hvor du ønsker at tilføje 2 telefonnumre eller tage kvadratroden af et kreditkortnummer. Sådanne værdier skal gemmes som tekst.