2009-09-07 15 views
18

Ich führe SQL, das den Wert auf die nächste ganze Zahl aufrunden muss.Wert auf die nächste ganze Zahl in SQL aufrüsten UPDATE

Was ich brauche, ist 45,01 Runden bis 46. Auch 45,49 Runden zu 46. Und 45,99 Runden bis zu 46, auch. Ich will alles eine ganze Zahl hoch.

Wie erreiche ich dies in einer UPDATE-Anweisung wie folgt?

Update product SET price=Round 

Antwort

23

Sie konnten die ceil Funktion, zumindest auf MySQL verwenden; Dieser Teil des SQL-Codes:

select ceil(45.01), ceil(45.49), ceil(45.99); 

erhalten Sie jedes Mal "46".

Für das Update, so würde ich sagen:

Update product SET price = ceil(45.01) 


BTW: Auf MySQL, ceil ist ein Alias ​​für ceiling; nicht sicher über andere DB-Systeme, so dass man das eine oder andere verwenden können müssen, auf der DB je ... Sie verwenden


Zitiert in der Dokumentation:

CEILING(X)

Returns der kleinste integer-Wert nicht weniger als X.

und dem gegebenen Beispiel:

2

Dies hängt vom Datenbankserver ab, wird aber oft als CEIL oder CEILING bezeichnet. Zum Beispiel in MySQL ...

mysql> select ceil(10.5); 
+------------+ 
| ceil(10.5) | 
+------------+ 
|   11 | 
+------------+ 

können Sie dann tun UPDATE PRODUCT SET price=CEIL(some_other_field);

+0

willkommen zu stackoverflow! Alle eingerückten vier Leerzeichen sind als Code formatiert, Sie können dazu den Button mit Binärziffern im Editor verwenden. Ich hoffe, es macht dir nichts aus, wenn ich deine Antwort auf diese Frage korrigiere! –

3

Wenn Sie dann die Rundenfunktion verwenden abrunden möchten. Verwenden Sie die ceiling-Funktion, wenn Sie die kleinste ganze Zahl erhalten möchten, die größer als Ihr Argument ist.

Für Ex: select round (843.4923423423,0) von Dual gibt Ihnen 843 und

select round (843.6923423423,0) aus Dual gibt Ihnen 844

+0

Was, wenn Sie nur auf den nächsten Penny runden möchten? Wenn die Steuer 13,052 $ beträgt, muss ich das auf 13,053 $ runden. Ich könnte ceiling() verwenden, aber ich müsste zuerst multiplizieren mit 100, dann dividieren durch 100. Scheint lahm. – datagod

4

Für MS SQL CEILING (Ihre Nummer) runden es ab. FLOOR (Ihre Nummer) wird abgerundet

3

Ceiling ist der Befehl, den Sie verwenden möchten.

Im Gegensatz zu Round, Ceiling nimmt nur einen Parameter (den Wert, den Sie aufrunden möchten), daher müssen Sie, wenn Sie auf eine Dezimalstelle runden wollen, die Zahl mit vielen Dezimalstellen multiplizieren und danach dividieren.

Beispiel.

Ich möchte 1.2345 auf 2 Dezimalstellen aufrunden.

CEILING(1.2345*100)/100 AS Cost 
Verwandte Themen