Mysql
 sql >> Base de données >  >> RDS >> Mysql

MAX(Colonne) me renvoie une mauvaise valeur

Cette situation peut se produire si votre invoice_number est stocké sous forme de colonne de texte, par ex. varchar(10) . Dans ce cas, selon l'ordre alphabétique, 9 sera la valeur maximale.

Idéalement, vous devriez stocker les valeurs sur lesquelles vous souhaitez effectuer des opérations numériques en tant que types de données numériques, par ex. int . Cependant, si pour une raison quelconque vous ne pouvez pas modifier le type de données de la colonne, vous pouvez essayer de convertir la colonne avant d'appliquer MAX , comme ceci :

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

REMARQUE :Je mentionne spécifiquement "les valeurs sur lesquelles vous souhaitez effectuer des opérations numériques" car il y a des cas où le texte saisi est entièrement numérique, comme des numéros de téléphone ou peut-être des numéros de carte de crédit, mais il n'y a aucun scénario dans lequel vous voudriez ajouter 2 numéros de téléphone, ou prendre la racine carrée d'un numéro de carte de crédit. Ces valeurs doivent être stockées sous forme de texte.