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.