MySQL melakukan konversi senyap untuk string dalam konteks numerik. Karena mengharapkan angka untuk sum() , MySQL hanya melakukan konversi menggunakan "angka" terkemuka dari sebuah string. Perhatikan bahwa ini termasuk titik desimal, tanda minus, dan bahkan e merepresentasikan notasi ilmiah. Jadi, '1e6' ditafsirkan sebagai angka.
Dalam kode, saya pribadi akan membuat konversi eksplisit dengan menambahkan 0 :
SELECT SUM(parametervalue + 0) FROM table
Ironisnya, cast() mungkin mengembalikan kesalahan jika string tidak dalam format numerik, tetapi ini tidak mengembalikan kesalahan dalam kasus itu.