Deltamodel

a structured approach ...

MySQL: Nullen nach dem Komma mit SQL abschneiden

MySQL speichert Zahlen mit Nachkommastellen als Datentyp Dec(M,D) mit
  • M als maximaler Anzahl an Ziffern und
  • D als Anzahl der Ziffern neben dem Komma bzw. Punkt.

Ein SELECT Statement gibt den kompletten Wert aus, also z.B.

SET @num=20.5000;
SELECT @num;
--> 20.5000

Ein häufig vorkommender Anwendungsfall ist es, dass das Ergebnis ohne die hinteren Nullen geliefert werden soll. Das Abschneiden der Nullen kann entweder durch ein Weiterverarbeiten des Ergebnisses mit einer Programmiersprache auf dem Server (z.B. PHP) oder dem Client (z.B. Javascript) erfolgen oder direkt innerhalb MySQL mittels

SET @num=20.5000;
SELECT IF (
    LOCATE ('.', @num) > 0, 
    TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM @num)),
    @num );
--> 20.5

Das Prüfen auf die Existenz des Decimal Point stellt sicher, dass bei ganzzahligen Werten die hinteren Nullen nicht abgeschnitten werden.

Vergleiche hierzu

SET @num=20;
-- Mit IF
SELECT IF (
    LOCATE ('.', @num) > 0, 
    TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM @num)),
    @num );
--> 20
--
-- Ohne IF
SELECT TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM @num));
--> 2