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
.