SQL SERVER四舍五入你除了用ROUND还有其他方法吗?

引言

今天和测试沟通一个百分比计算方式时遇到一个问题, 我在存储过程里用到了强转CAST(32.678 AS DECIMAL(5,1))  我认为该方式只会保留一位小数,我给测试的回复是我并没有用到四舍五入函数,数据也没有四舍五入,而测试说他们自己验证后觉的数据是经过四舍五入了的。 想到这里于是我再试了试存储过程的每个计算点,才发现了这个问题。

ROUND

那么用到四舍五入并且保留小数点时我们肯定会首选ROUND函数,  如果字段的数据类型是decimal(18,10)时那么四舍五入后还会有很多0出现。

CAST和CONVERT

其实我使用强转时并没有打算四舍五入结果,只是单纯为了得到符合我要求的数据,今天才发现这两个强转也会四舍五入结果,也就是说下面三个语句将会返回相同的结果值

select ROUND(32.678,1)    --32.700

select CAST(32.678 as DECIMAL(5,1))  --32.7

select convert(NUMERIC(5,1),32.678)  --32.7
上一篇:根据截至日期格式获取倒计时&&时间戳转日期格式


下一篇:36. 有效的数独 - LeetCode