🐕
INTEGERにCASTすると四捨五入で返る
背景
小数点以下を切り捨てたい場合、例えばpythonだとint()を使う。
[IN]
int(3.4)
int(3.6)
[OUT]
3
3
先日SQLを叩く際、小数点以下切り捨ての結果を得るために特に調べもせずpythonと同じ感覚でINTEGERにCASTするという処理を書いてたら、後々計算が合わないという事象が発生した。
SELECT
CAST(3.4 AS INT)
CAST(3.6 AS INT)
原因
INTEGERにCASTすると四捨五入で結果が返ることが原因
SELECT
CAST(3.4 AS INT)
CAST(3.6 AS INT)
3
4
対策
TRUNCしましょう
SELECT
TRUNC(3.4)
TRUNC(3.6)
3
3
以上です。
Discussion