O MySQL faz a conversão silenciosa para uma string em um contexto numérico. Porque espera um número para o
sum() , o MySQL simplesmente faz a conversão usando os "números" iniciais de uma string. Observe que isso inclui pontos decimais, sinal de menos e até e representando notação científica. Então, '1e6' é interpretado como um número. No código, eu pessoalmente tornaria a conversão explícita adicionando
0 :SELECT SUM(parametervalue + 0) FROM table
Ironicamente, o
cast() pode retornar um erro se a string não estiver em um formato numérico, mas isso não retornará um erro nesse caso.