Mysql
 sql >> Database >  >> RDS >> Mysql

MAX(Colonna) mi restituisce un valore errato

Questa situazione può verificarsi se il tuo invoice_number viene memorizzato come una colonna di testo, ad es. varchar(10) . In tal caso, in base all'ordine alfabetico, 9 sarà il valore massimo.

Idealmente, dovresti memorizzare i valori su cui desideri eseguire operazioni numeriche come tipi di dati numerici, ad es. int . Tuttavia, se per qualche motivo non riesci a modificare il tipo di dati della colonna, puoi provare a trasmettere la colonna prima di applicare MAX , in questo modo:

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

NOTA:menziono espressamente i "valori su cui si vogliono eseguire operazioni numeriche" perché ci sono casi in cui il testo di input è interamente numerico, come numeri di telefono o forse numeri di carta di credito, ma non esiste uno scenario in cui si desidera aggiungere 2 numeri di telefono o prendere la radice quadrata di un numero di carta di credito. Tali valori devono essere memorizzati come testo.