sql >> Database >  >> RDS >> Sqlserver

Decimaal getal naar beneden afronden in SQL Server 2008

1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) behandelt het eerste geval - met dank aan een antwoord op een vergelijkbare vraag op SQL Server-forums , die ik heb aangepast en snel heb gecontroleerd.

Houd er rekening mee dat als de getallen die u aan het afronden bent naar de dichtstbijzijnde 0.5 kan groter zijn (bijv. 333.69 => 333.5 ), zorg ervoor dat u meer decimal opgeeft precisie wanneer u cast (bijv. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) ), of u kunt een overloopfout krijgen:

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

Extra precisie heeft geen invloed op het eindresultaat (d.w.z. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) en select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) beide leveren 3.5 op ); maar het is zonde als de getallen die je afrondt altijd kleiner zijn.

Online referenties met voorbeelden zijn beschikbaar voor T-SQL FLOOR , CAST , en decimal om te helpen.

2) select ROUND(142600, -3) behandelt de tweede zaak.

Een vergelijkbare online referentie is beschikbaar voor T-SQL ROUND .



  1. MySQL Query lijkt geen verwachtingen te wekken

  2. mysql bestellen op geserialiseerde data?

  3. Hoe de MySQL-gegevensmap in de docker-container migreren?

  4. de beste manier om gegevenswijzigingen in Oracle bij te houden