Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Arrondir les nombres décimaux dans SQL Server 2008

1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) gère le premier cas - grâce à une réponse à une question similaire sur les forums SQL Server , que j'ai adapté et vérifié rapidement.

Notez que si les nombres que vous arrondissez au 0.5 le plus proche pourrait être plus grand (par exemple 333.69 => 333.5 ), assurez-vous de spécifier plus de decimal précision lors de la conversion (par exemple, select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) ), ou vous pourriez obtenir une erreur de débordement :

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

Une précision supplémentaire n'affectera pas le résultat final (c'est-à-dire select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) et select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) les deux donnent 3.5 ); mais c'est du gaspillage si les nombres que vous arrondissez seront toujours plus petits.

Des références en ligne avec des exemples sont disponibles pour T-SQL FLOOR , CAST , et decimal pour aider.

2) select ROUND(142600, -3) gère le second cas.

Une référence en ligne similaire est disponible pour T-SQL ROUND .