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.