Deze situatie kan optreden als uw invoice_number
wordt opgeslagen als een tekstkolom, b.v. varchar(10)
. In dat geval is 9 op alfabetische volgorde de maximale waarde.
Idealiter zou u waarden waarop u numerieke bewerkingen wilt uitvoeren, moeten opslaan als numerieke datatypes, b.v. int
. Als u echter om de een of andere reden het gegevenstype van de kolom niet kunt wijzigen, kunt u proberen de kolom te casten voordat u MAX
toepast. , zoals zo:
select max (convert(invoice_number, signed integer)) as maxinv from invoice
OPMERKING:ik noem specifiek "waarden waarop u numerieke bewerkingen wilt uitvoeren" omdat er gevallen zijn waarin de invoertekst volledig numeriek is, zoals telefoonnummers of misschien creditcardnummers, maar er is geen scenario waarin u 2 telefoonnummers zou willen toevoegen of de vierkantswortel van een creditcardnummer zou willen nemen. Dergelijke waarden moeten als tekst worden opgeslagen.