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.