1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
řeší první případ – s laskavým svolením odpověď na podobnou otázku na fórech SQL Server
, kterou jsem upravil a rychle zkontroloval.
Všimněte si, že pokud čísla zaokrouhlujete na nejbližší 0.5
může být větší (např. 333.69
=> 333.5
), nezapomeňte zadat více decimal
přesnost při vrhání (např. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
), nebo se může zobrazit chyba přetečení:
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
Mimořádná přesnost neovlivní konečný výsledek (tj. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
a select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
oba dávají 3.5
); ale je zbytečné, když čísla, která zaokrouhlujete, budou vždy menší.
Pro T-SQL jsou k dispozici online reference s příklady FLOOR
, CAST
a decimal
pomoci.
2) select ROUND(142600, -3)
řeší druhý případ.
Podobná online reference je k dispozici pro T-SQL ROUND
.