MySQL provádí tichý převod řetězce v číselném kontextu. Protože očekává číslo pro sum() , MySQL jednoduše provede převod pomocí úvodních „číslic“ z řetězce. Všimněte si, že to zahrnuje desetinné čárky, znaménko mínus a dokonce e představující vědecký zápis. Takže '1e6' je interpretováno jako číslo.
V kódu bych osobně udělal konverzi explicitní přidáním 0 :
SELECT SUM(parametervalue + 0) FROM table
Je ironií, že cast() může vrátit chybu, pokud řetězec není v číselném formátu, ale v takovém případě to nevrací chybu.