Tato situace může nastat, pokud vaše invoice_number
je uložen jako textový sloupec, např. varchar(10)
. V takovém případě, na základě abecedního pořadí, bude maximální hodnota 9.
V ideálním případě byste měli ukládat hodnoty, se kterými chcete provádět numerické operace, jako numerické datové typy, např. int
. Pokud však z nějakého důvodu nemůžete změnit datový typ sloupce, můžete před použitím MAX
zkusit sloupec přetypovat , asi takhle:
select max (convert(invoice_number, signed integer)) as maxinv from invoice
POZNÁMKA:Konkrétně uvádím "hodnoty, se kterými chcete provádět numerické operace" protože existují případy, kdy je vstupní text výhradně číselný, jako jsou telefonní čísla nebo možná čísla kreditních karet, ale neexistuje žádný scénář, ve kterém byste chtěli přidat 2 telefonní čísla nebo vzít druhou odmocninu čísla kreditní karty. Takové hodnoty by měly být uloženy jako text.