sql >> Databáze >  >> RDS >> Sqlserver

Zaokrouhlení desetinných čísel dolů v SQL Server 2008

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 .



  1. Přidání indexu na booleovské pole

  2. Výpočet rozdílu mezi dvěma časovými razítky v Oracle v milisekundách

  3. Velikost pro ukládání adres IPv4, IPv6 jako řetězce

  4. SQL:Vyberte název dynamického sloupce na základě proměnné