sql >> Databasteknik >  >> RDS >> Mysql

mysql SUMMA av VARCHAR-fält utan att använda CAST

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.




  1. Returnera resultat av en sql-fråga som JSON i oracle 12c

  2. Flask, inte alla argument konverterade under strängformatering

  3. Kombinera två tabeller till en ny så att valda rader från den andra ignoreras

  4. Hur väljer man flera rader efter primärnyckel med flera kolumner i MySQL?