Nummern via SQL Aufrunden

#1
Hallo,

ich habe eine Tabelle mit 11000 Einträgen.
Die Spalte reg enthält Zahlen wie

33,01
5,07
10,08
10,28

Besteht eine Möglichkeit via MySQL alle auszulesen, aufzurunden und Update auf

33,10
5,10
10,10
10,30

Mit PHP wäre das ja kein Problem, via PHP auslesen und Aufrunden und dann ein SQL Update durchführen. Geht sowas auch nur mit reinem SQL?
 
Zuletzt bearbeitet:

Mat

Well-Known Member
c-b Experte
#2
Jo, das müsste bei jeder MySQL-Version gehen.

Kannst du ja mal ausprobieren mit einer Vorschau-Abfrage:
SQL:
SELECT spaltenname as 'vorher', ROUND(spaltenname + 0.04, 1) as 'nachher' FROM datenbankname.tabellenname
Oder ohne Daten direkt ausprobieren:
SQL:
SELECT ROUND(33.01 + 0.04, 1), ROUND(5.07 + 0.04, 1), ROUND(10.08 + 0.04, 1), ROUND(10.28 + 0.04, 1)
Wenn du das häufiger brauchst, lohnt es sich vielleicht, eine Prozedur dafür zu schreiben.
 
#3
Ne, das war noch nicht das richtige.
Aus 33,01 machte er 33,13 anstatt 33,10

Um genauer zu sein geht es sich hier um 11000 Einträge in € die immer auf die nächsten 10 Cent. aufgerundet werden sollen. Aus 33,01€ wird 33,10€
Aus 74,13€ wird 74,20€

Ich habe es schon mit PHP, round und ceil versucht, dies klappte aber leider nicht wie gewünscht.
 
#5
Versuch es einmal mit :
Code:
TRUNC( spaltenname + 0.09, 1 )
Er meckerte wegen TRUNC aber deine Lösung läuft 1A, Danke

SQL:
SELECT reg AS 'vorher', TRUNCATE(reg + 0.09, 1) AS 'nachher' FROM test.rs37_price
Aus 33,17 macht er mir nun 33,2.
Habe mir mit deiner Lösung jetzt eine Schöne PHP Funktion gebaut die daraus zwei Nachkommastellen macht und das SQL Update durchführt.
 
#9
Wie macht der denn aus SELECT ROUND(33.01+0.04,1); am Ende 33.13?
Mein Fehler. Es klappt auch mit diesem Beispiel.
Nur zur Vollständigkeit. Wie sieht das ganze in PHP aus?

IST-------------------SOLL
25.3-------------------25.30
57.32-------------------57.40
119.1-------------------119.10

Meine Lösung wäre jetzt
PHP:
$zahl = 25.43;
$zahl = ROUND($zahl+0.04,1);  // ergibt 25.5;

echo $zahl.'0'; // 0 dran hängen um auf 25.50 zu kommen
Ich denke das geht auch einfacher oder?
 

asc

Well-Known Member
c-b Experte
#10
number_format oder in deinem fall money_format

Du musst dir halt im klaren sein, dass du am Ende, wenn du 25.3 zu 25.30 umwandelst, keine Zahl mehr hast, sondern eine Zeichenkette. Jedes mal wenn du versuchst 25.30 wieder in eine Zahl umzuwandeln hast du wieder 25.3. Es macht also nur Sinn eine Zahl entsprechend so umzuwandeln wenn du diese ausgeben möchtest, nicht aber wenn du damit rechnen möchtest.
 
Oben