Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abrunden von Dezimalzahlen in SQL Server 2008

1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) behandelt den ersten Fall - mit freundlicher Genehmigung einer Antwort auf eine ähnliche Frage in den SQL Server-Foren , die ich angepasst und schnell überprüft habe.

Beachten Sie, dass Sie die Zahlen auf den nächsten 0.5 runden könnte größer sein (z.B. 333.69 => 333.5 ), achten Sie darauf, mehr decimal anzugeben Genauigkeit, wenn Sie werfen (zB select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) ), oder Sie erhalten einen Überlauffehler:

Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.

Zusätzliche Genauigkeit wirkt sich nicht auf das Endergebnis aus (d. h. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) und select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) beide ergeben 3.5 ); aber es ist verschwenderisch, wenn die zu rundenden Zahlen immer kleiner werden.

Online-Referenzen mit Beispielen sind verfügbar für T-SQL FLOOR , CAST , und decimal zu helfen.

2) select ROUND(142600, -3) behandelt den zweiten Fall.

Eine ähnliche Online-Referenz ist für T-SQL ROUND .