MySQL udfører tavs konvertering for en streng i en numerisk kontekst. Fordi den forventer et tal for sum() , MySQL udfører simpelthen konverteringen ved hjælp af de førende "tal" fra en streng. Bemærk, at dette inkluderer decimaltegn, minustegn og endda e repræsenterer videnskabelig notation. Så '1e6' tolkes som et tal.
I kode ville jeg personligt gøre konverteringen eksplicit ved at tilføje 0 :
SELECT SUM(parametervalue + 0) FROM table
Ironisk nok er cast() returnerer muligvis en fejl, hvis strengen ikke er i et numerisk format, men dette returnerer ikke en fejl i så fald.