Esta situação pode ocorrer se o seu
invoice_number
é armazenado como uma coluna de texto, por exemplo varchar(10)
. Nesse caso, por ordem alfabética, 9 será o valor máximo. Idealmente, você deve armazenar valores nos quais deseja realizar operações numéricas como tipos de dados numéricos, por exemplo.
int
. No entanto, se por algum motivo você não puder alterar o tipo de dados da coluna, tente converter a coluna antes de aplicar MAX
, igual a:select max (convert(invoice_number, signed integer)) as maxinv from invoice
OBSERVAÇÃO:menciono especificamente "valores nos quais você deseja realizar operações numéricas" porque há casos em que o texto de entrada é inteiramente numérico, como números de telefone ou talvez números de cartão de crédito, mas não há cenário em que você queira adicionar 2 números de telefone ou obter a raiz quadrada de um número de cartão de crédito. Esses valores devem ser armazenados como texto.