Kazuki.io

プログラミングやITガジェットなどの備忘録だよ。人の役に立てばいいな。

SQL Server DECIMALの型定義外の数値扱いについて

久々にSQL ServerのDECIMAL型を使用したのでメモ。
特に型外の数値がDECIMAL変数に入ったときの挙動について

小数点桁数が大きい場合(下の最後の桁が5)

DECLARE @decimal AS DECIMAL(8,2)
SET @decimal = 987654.565 --小数第三位が5
SELECT @decimal

四捨五入される。
987654.57

小数点桁数が大きい場合(下の最後の桁が4)

DECLARE @decimal AS DECIMAL(8,2)
SET @decimal = 987654.564 --小数第三位が4
SELECT @decimal

同様に四捨五入される。
987654.56

DECLARE @decimal AS DECIMAL(8,2)
SET @decimal = 9876543.564 --整数部が7桁ある!
SELECT @decimal

算術オーバーフローが発生する。
f:id:kazukisaito:20180611112840p:plain