MySQL udfører tavs konvertering for en streng i en numerisk kontekst. Fordi den forventer et tal for sum()
, MySQL udfører simpelthen konverteringen ved hjælp af de førende "tal" fra en streng. Bemærk, at dette inkluderer decimaltegn, minustegn og endda e
repræsenterer videnskabelig notation. Så '1e6'
tolkes som et tal.
I kode ville jeg personligt gøre konverteringen eksplicit ved at tilføje 0
:
SELECT SUM(parametervalue + 0) FROM table
Ironisk nok er cast()
returnerer muligvis en fejl, hvis strengen ikke er i et numerisk format, men dette returnerer ikke en fejl i så fald.