MySQL effectue une conversion silencieuse pour une chaîne dans un contexte numérique. Parce qu'il attend un nombre pour le sum() , MySQL effectue simplement la conversion en utilisant les "nombres" principaux d'une chaîne. Notez que cela inclut les points décimaux, le signe moins et même e représentant la notation scientifique. Donc, '1e6' est interprété comme un nombre.
Dans le code, je rendrais personnellement la conversion explicite en ajoutant 0 :
SELECT SUM(parametervalue + 0) FROM table
Ironiquement, le cast() peut renvoyer une erreur si la chaîne n'est pas au format numérique, mais cela ne renvoie pas d'erreur dans ce cas.