sql >> Database teknologi >  >> RDS >> Mysql

mysql SUM af VARCHAR-felter uden at bruge CAST

MySQL udfører tavs konvertering for en streng i en numerisk kontekst. Fordi den forventer et tal for sum() , MySQL udfører simpelthen konverteringen ved hjælp af de førende "tal" fra en streng. Bemærk, at dette inkluderer decimaltegn, minustegn og endda e repræsenterer videnskabelig notation. Så '1e6' tolkes som et tal.

I kode ville jeg personligt gøre konverteringen eksplicit ved at tilføje 0 :

SELECT SUM(parametervalue + 0) FROM table

Ironisk nok er cast() returnerer muligvis en fejl, hvis strengen ikke er i et numerisk format, men dette returnerer ikke en fejl i så fald.




  1. Entity framework tilføjer en ekstra betingelse om hvor-klausul

  2. Beregning af samlet tidsvarighed i MySQL

  3. Sådan bruges JSTL sql tag

  4. Codeigniter kan ikke slette rækker fra databasetabellen ved hjælp af join-metoden