当前位置: 代码迷 >> SQL >> SQL SERVER四舍五入您除了用ROUND还有其他方法吗
  详细解决方案

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

热度:122   发布时间:2016-05-05 09:50:45.0
SQL SERVER四舍五入你除了用ROUND还有其他方法吗?

引言

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

 

 

ROUND

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

 

CAST和CONVERT

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

 

select ROUND(32.678,1)    --32.700select CAST(32.678 as DECIMAL(5,1))  --32.7select convert(NUMERIC(5,1),32.678)  --32.7

 

  相关解决方案