Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MAX(Column) me retorna um valor errado


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.