SQL: Floatwerte aufrunden

vom 11.06.2012, 09:44 Uhr

Ich habe im Ergebnis einer SQL-Anweisung einen Geldbetrag (mit vielen Kommastellen), den ich runden muss. Gefordert ist, dass auf 2 Nachkommastellen gerundet wird und zwar nicht kaufmännisch, sondern immer auf den nächsten Cent-Betrag. Das Ergebnis soll wie folgt aussehen:

1,2300001 EUR --> 1,24 EUR
1,2350000 EUR --> 1,24 EUR
1,2399999 EUR --> 1,24 EUR
1,2400000 EUR --> 1,24 EUR

Wie kann ich das per SQL umsetzen?

» dhammer » Beiträge: 234 » Talkpoints: 105,69 » Auszeichnung für 100 Beiträge



Bei MySQL gibt es die Funktion Round(). Mit dieser kann man sehr einfach eine Zahl runden. Man übergibt dieser zuerst die Zahl, die gerundet werden soll, und als zweiten Parameter die Anzahl der Kommastellen. Du kannst dir hier auch ein Beispiel ansehen.

Benutzeravatar

» hennessy221 » Beiträge: 5132 » Talkpoints: -1,94 » Auszeichnung für 5000 Beiträge


Grundsätzlich ist SQL natürlich eine standardisierte Abfragesprache. Aber leider entwickeln die unterschiedlichen Hersteller von Datenbanken regelmäßig ihre eigenen Dialekte und das endet auch in eigenen Funktionen, welche dann auch nur auf einer bestimmten Plattform verstanden wird. Das lernt man sehr schnell, wenn man versucht, Datumsoperationen über verschiedene Datenbanken zu vereinheitlichen.

Leider hast du hier nicht angegeben, für welche Datenbank du eine Lösung suchst bzw. erwartest. Da aber dein Vorhaben keiner "Standardanforderung" entspricht, denke ich nicht, dass es auf Grund der Nachkommastellen eine vorgesehene Funktion gibt. Lösen läßt es sich aber dennoch.

Wenn ich mal den MS SQL Server nehme, dann kann man ganz einfach zu der von dir gewünschten Rundung kommen. Dazu muss aber auch gerechnet werden. Was also in jedem Fall funktioniert, wäre ein Aufruf in der folgenden Form:

Code: Alles auswählen
SELECT CEILING( <WERT> *100)/100;


Die Funktion CEILING gibt hierbei immer die kleinste (!) Zahl wieder, welche größer bzw. gleich dem angegebenen <Wert> ist. Mit 100 muss hierbei multipliziert werden, um die Nachkommastellen zu erwischen. Das Ergebnis wird dann wieder durch 100 geteilt, um eben die aufgerundete Zahl mit Nachkommastellen zu haben.

» derpunkt » Beiträge: 9898 » Talkpoints: 88,55 » Auszeichnung für 9000 Beiträge



Ähnliche Themen

Weitere interessante Themen

^