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.