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.