sql >> Database >  >> RDS >> Mysql

mysql SUM van VARCHAR-velden zonder CAST . te gebruiken

MySQL voert stille conversie uit voor een string in een numerieke context. Omdat het een getal verwacht voor de sum() , doet MySQL de conversie gewoon met behulp van de leidende "getallen" uit een string. Merk op dat dit decimale punten, mintekens en zelfs e . omvat wetenschappelijke notatie vertegenwoordigen. Dus '1e6' wordt geïnterpreteerd als een getal.

In code zou ik persoonlijk de conversie expliciet maken door 0 . toe te voegen :

SELECT SUM(parametervalue + 0) FROM table

Ironisch genoeg is de cast() kan een fout retourneren als de tekenreeks geen numerieke notatie heeft, maar in dat geval wordt er geen fout geretourneerd.




  1. Hoe het totale aantal rijen in een ACF-repeateruitgang te tellen?

  2. Python 2.6.1 verbinden met MySQLdb

  3. Hoe een tagging-systeem vergelijkbaar met SO in php/mysql te implementeren?

  4. Cluster-naar-clusterreplicatie configureren voor PostgreSQL