MySQL voert stille conversie uit voor een string in een numerieke context. Omdat het een getal verwacht voor de sum() , doet MySQL de conversie gewoon met behulp van de leidende "getallen" uit een string. Merk op dat dit decimale punten, mintekens en zelfs e . omvat wetenschappelijke notatie vertegenwoordigen. Dus '1e6' wordt geïnterpreteerd als een getal.
In code zou ik persoonlijk de conversie expliciet maken door 0 . toe te voegen :
SELECT SUM(parametervalue + 0) FROM table
Ironisch genoeg is de cast() kan een fout retourneren als de tekenreeks geen numerieke notatie heeft, maar in dat geval wordt er geen fout geretourneerd.