Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Implizite Konvertierungen und Rundungen

Das brachte mich zum Lesen und die Antwort scheint ausgesprochen unbefriedigend zu sein, Die früheste SQL-Referenz, die ich finden konnte (ANSI 92 verfügbar hier ) im Abschnitt 4.4.1 Eigenschaften von Zahlen besagt, dass

Was es Microsoft überlässt, welche der beiden sie für T-SQL implementiert haben, und ich nehme an, der Einfachheit halber haben sie sich für die Kürzung entschieden. Aus dem Wikipedia-Artikel zum Runden es scheint, dass dies damals keine ungewöhnliche Entscheidung war.

Es ist interessant festzustellen, dass laut der Dokumentation, die ich gefunden habe, nur Konvertierungen in Ganzzahlen zu einer Kürzung führen, die anderen zu einer Rundung. Obwohl aus irgendeinem bizarren Grund die Umwandlung von money zu integer scheint sich dem Trend zu widersetzen, da er runden darf.

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

Tabelle aus hier .