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.