Тази ситуация може да възникне, ако invoice_number
се съхранява като текстова колона, напр. varchar(10)
. В този случай, въз основа на азбучен ред, 9 ще бъде максималната стойност.
В идеалния случай трябва да съхранявате стойности, върху които искате да извършвате числови операции като числови типове данни, напр. int
. Въпреки това, ако по някаква причина не можете да промените типа данни на колоната, можете да опитате да прехвърлите колоната, преди да приложите MAX
, така:
select max (convert(invoice_number, signed integer)) as maxinv from invoice
ЗАБЕЛЕЖКА:Специално споменавам "стойности, върху които искате да извършите числови операции" тъй като има случаи, в които въведеният текст е изцяло цифров, като телефонни номера или може би номера на кредитни карти, но няма сценарий, при който бихте искали да добавите 2 телефонни номера или да вземете корен квадратен от номер на кредитна карта. Такива стойности трябва да се съхраняват като текст.