MySQL gör tyst konvertering för en sträng i ett numeriskt sammanhang. Eftersom den förväntar sig ett tal för sum() , MySQL gör helt enkelt omvandlingen med hjälp av de inledande "siffrorna" från en sträng. Observera att detta inkluderar decimaler, minustecken och till och med e representerar vetenskaplig notation. Så, '1e6' tolkas som ett tal.
I kod skulle jag personligen göra omvandlingen explicit genom att lägga till 0 :
SELECT SUM(parametervalue + 0) FROM table
Ironiskt nog är cast() kan returnera ett fel om strängen inte är i ett numeriskt format, men detta returnerar inte ett fel i så fall.