MySQL извършва тихо преобразуване за низ в числов контекст. Тъй като очаква число за sum()
, MySQL просто извършва преобразуването, използвайки водещите "числа" от низ. Имайте предвид, че това включва десетични точки, знак минус и дори e
представляваща научна нотация. И така, '1e6'
се интерпретира като число.
В кода аз лично бих направил преобразуването изрично, като добавя 0
:
SELECT SUM(parametervalue + 0) FROM table
По ирония на съдбата cast()
може да върне грешка, ако низът не е в числов формат, но това не връща грешка в този случай.