MySQL esegue la conversione silenziosa di una stringa in un contesto numerico. Perché si aspetta un numero per sum()
, MySQL esegue semplicemente la conversione utilizzando i "numeri" iniziali di una stringa. Nota che questo include punti decimali, segno meno e persino e
che rappresenta la notazione scientifica. Quindi, '1e6'
viene interpretato come un numero.
Nel codice, renderei personalmente esplicita la conversione aggiungendo 0
:
SELECT SUM(parametervalue + 0) FROM table
Ironia della sorte, il cast()
potrebbe restituire un errore se la stringa non è in un formato numerico, ma in questo caso non viene restituito un errore.