Mysql Nachkommastellen (0) abschneiden?
Hallo, ich habe eine Tabelle mit einer Spalte float(10,3). Nun habe ich Werte mit unterschiedlicher Länge der Nachkommastelle. Bsp:
143.4
76.12
112.214
welche in der Datenbank als
143.400
76.120
112.214
abgespeichert werden.
Gibt es vielleicht eine Funktion die beim auslesen der Daten aus der DB gleich die Nullen automatisch abschneidet, sodas ich die Werte wieder habe wie vor der Eintragung?
4 Antworten
Zum Abschneiden nimm' in PHP die floor Funktion, die schneidet alle Nachkommastellen weg.
Um auf 2 Nachkommastellen zu kürzen mltiplzierst Du den Wert zunächst mit 100, kürzt ihn und teilst ihn wieder durch hundert.
x = floor (x*100) / 100;
Wenn Du lieber runden statt abschneiden willst, nimm round:
x = round (x*100) / 100;
Noch eleganter ist die Funktion number_format
Da kannst Du dann bestimmen wie der Zeichen für Dezimalstelle und zur Gruppierung der Tausender aussehen.
Syntax: ZAHL = number_format (ZAHL, Nachkommastellen, Dezimaltrennzeichen, Tausendertrennzeichen)
$x = number_format($x, 2, ',', '.');
Das würde aus 1234,567 dann 1.234,57 machen - arbeitet also wie round().
Wenn Du's in eine Datenbank schreibst brauchst Du aber keine Tausendertrennzeichen und als Dezimaltrenner enen Punkt:
$x = number_format($x, 2, '.', '');
Eventuell hilft DIr das weiter:
ROUND()
, CEIL()
oder FLOOR() zum runden auf eine bestimmte Länge der Nachkommastelle.
SELECT ROUND( xy,....
dazu gibt es noch String-Funktionen womit man alles mögliche machen kann,
z.B. Nullen wegschneiden:
https://dev.mysql.com/doc/refman/5.7/en/string-functions.html
Schau dir mal Reguläre Ausdrücke (Regex) an. Damit lässt sich das ohne Probleme und vorallem ohne Fehler (wie bei den anderen Antworten) lösen.
Das nützt dir nix, da du in der DB 3 Nachkommastellen definiert hast. PHP "schneidet" das eh schon automatisch ab, MySQL fügt die Nullen aber wieder hinzu - eben aufgrund der definierten 3 Nachkommastellen.
Meine Frage war ein wenig undeutlich.
Ich meine natürlich wenn ich die Daten wieder aus der DB auslese.