小数が入らない項目に、小数があるデータをセットした場合

何日か前に聞かれたのを思い出したので調べてみた。

DECLARE @TEST NUMERIC(5, 0)
SET @TEST = 1.0
SELECT @TEST
SET @TEST = -1.0
〜
SELECT @TEST
SET @TEST = 1.4
SELECT @TEST
SET @TEST = -1.4
SELECT @TEST
SET @TEST = 1.5
SELECT @TEST
SET @TEST = -1.5
〜
SELECT @TEST
SET @TEST = 2.0
SELECT @TEST
SET @TEST = -2.0

結果は、四捨五入っぽい動きをした。下の SQL と結果が一緒。

SELECT ROUND(1.0, 0)
SELECT ROUND(-1.0, 0)
〜
SELECT ROUND(1.4, 0)
SELECT ROUND(-1.4, 0)
SELECT ROUND(1.5, 0)
SELECT ROUND(-1.5, 0)
〜
SELECT ROUND(2.0, 0)
SELECT ROUND(-2.0, 0)

公式の ソース を探してないので、環境によっては結果が変わるかも。