sql >> Base de Datos >  >> RDS >> Mysql

MAX (Columna) me devuelve un valor incorrecto

Esta situación puede ocurrir si su invoice_number se almacena como una columna de texto, p. varchar(10) . En ese caso, por orden alfabético, 9 será el valor máximo.

Idealmente, debería almacenar valores en los que desea realizar operaciones numéricas como tipos de datos numéricos, p. int . Sin embargo, si por algún motivo no puede cambiar el tipo de datos de la columna, puede intentar convertir la columna antes de aplicar MAX , así:

select max (convert(invoice_number, signed integer)) as maxinv from invoice

NOTA:Menciono específicamente "valores sobre los que desea realizar operaciones numéricas" porque hay casos en los que el texto de entrada es completamente numérico, como números de teléfono o quizás números de tarjetas de crédito, pero no hay ningún escenario en el que desee agregar 2 números de teléfono o sacar la raíz cuadrada de un número de tarjeta de crédito. Dichos valores deben almacenarse como texto.