Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql SUM von VARCHAR-Feldern ohne Verwendung von CAST

MySQL führt eine stille Konvertierung für einen String in einem numerischen Kontext durch. Weil es eine Zahl für sum() erwartet , führt MySQL die Konvertierung einfach mit den führenden "Zahlen" aus einer Zeichenfolge durch. Beachten Sie, dass dies Dezimalpunkte, Minuszeichen und sogar e enthält die wissenschaftliche Notation darstellt. Also '1e6' wird als Zahl interpretiert.

Im Code würde ich persönlich die Konvertierung explizit machen, indem ich 0 hinzufüge :

SELECT SUM(parametervalue + 0) FROM table

Ironischerweise der cast() kann einen Fehler zurückgeben, wenn die Zeichenkette kein numerisches Format hat, aber in diesem Fall wird kein Fehler zurückgegeben.