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
.