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

Conversions implicites et arrondis

Cela m'a fait lire et la réponse semble être nettement insatisfaisante, La première référence SQL que j'ai pu trouver (ANSI 92 disponible ici ) dans la section 4.4.1 Caractéristiques des nombres déclare que

Ce qui laisse à Microsoft le soin de choisir lequel des deux ils ont choisi d'implémenter pour T-SQL et je suppose que pour des raisons de simplicité, ils ont choisi la troncature. Extrait de l'article de Wikipédia sur l'arrondi il semble que ce n'était pas une décision rare à l'époque.

Il est intéressant de noter que, d'après la documentation que j'ai trouvée, seules les conversions en nombres entiers provoquent des troncatures, les autres provoquent des arrondis. Bien que pour une raison étrange, la conversion de money en integer semble inverser la tendance car il est autorisé à arrondir.

From     To       Behaviour

numeric  numeric  Round

numeric  int      Truncate

numeric  money    Round

money    int      Round

money    numeric  Round

float    int      Truncate

float    numeric  Round

float    datetime Round

datetime int      Round

Tableau de ici .