MySQL gör tyst konvertering för en sträng i ett numeriskt sammanhang. Eftersom den förväntar sig ett tal för sum()
, MySQL gör helt enkelt omvandlingen med hjälp av de inledande "siffrorna" från en sträng. Observera att detta inkluderar decimaler, minustecken och till och med e
representerar vetenskaplig notation. Så, '1e6'
tolkas som ett tal.
I kod skulle jag personligen göra omvandlingen explicit genom att lägga till 0
:
SELECT SUM(parametervalue + 0) FROM table
Ironiskt nog är cast()
kan returnera ett fel om strängen inte är i ett numeriskt format, men detta returnerar inte ett fel i så fall.