`
ln1058
  • 浏览: 92568 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL函数之四舍五入(转)

阅读更多
问题1:
SELECT CAST('123.456' as decimal) 将会得到 123(小数点后面的将会被省略掉)。
如果希望得到小数点后面的两位。
则需要把上面的改为
SELECT CAST('123.456' as decimal(38, 2)) ===>123.46
自动四舍五入了!

问题2:
SELECT ROUND(123.75633, 2, 1), ROUND(123.75633, 2)
上面的SQL得到的2个值是不一样的,前一个是:123.75000,后一个是:123.76000。
因为前者在进行四舍五入之前,小数点后已经被截取,保留了2位。
而后者则没有被截取,四舍五入时自然就会得到123.76000


ROUND
返回数字表达式并四舍五入为指定的长度或精度。

语法
ROUND ( numeric_e-xpression , length [ , function ] )

参数
numeric_e-xpression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

length

是 numeric_e-xpression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_e-xpression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_e-xpression 则按 length 所指定的在小数点的左边四舍五入。

function

是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_e-xpression 将四舍五入。当指定 0 以外的值时,将截断 numeric_e-xpression。

返回类型
返回与 numeric_e-xpression 相同的类型。

注释
ROUND 始终返回一个值。如果 length 是负数且大于小数点前的数字个数,ROUND 将返回 0。

示例 结果
ROUND(748.58, -4) 0


当 length 是负数时,无论什么数据类型,ROUND 都将返回一个四舍五入的 numeric_e-xpression。

示例 结果
ROUND(748.58, -1) 750.00
ROUND(748.58, -2) 700.00
ROUND(748.58, -3) 1000.00


示例
A. 使用 ROUND 和估计值
下例显示两个表达式,说明使用 ROUND 函数且最后一个数字始终是估计值。

Select ROUND(123.9994, 3), ROUND(123.9995, 3)
GO

下面是结果集:

----------- -----------
123.9990    124.0000  

B. 使用 ROUND 和四舍五入的近似值
下例显示四舍五入和近似值。

语句 结果
Select ROUND(123.4545, 2)
123.4500

Select ROUND(123.45, -2)
100.00

C. 使用 ROUND 截断
下例使用两个 Select 语句说明四舍五入和截断之间的区别。第一个语句四舍五入结果。第二个语句截断结果。

语句 结果
Select ROUND(150.75, 0)
151.00

Select ROUND(150.75, 0, 1)
150.00

----------------------------------------------------------------------------日期之差---------------------------

case   when   DateDiff(dd,借书日期,getdate())>30     then   DateDiff(dd,借书日期,getdate())*[单价]*1.012   else   0   end  
分享到:
评论

相关推荐

    SqlServer函数_四舍六入五成双

    注:修约时看保留小数的后一位为5时进行修约,其他按四舍五入情况。 修约:五后皆零看奇偶,修约看5前面那一位数,五前为偶应舍去,五前为奇要进一。 例: 0.4451 保留两位 0.45 例: 0.445 保留两位 0.44 例: 0.435 ...

    sqlserver四舍六入函数

    sqlserver函数实现四舍六入五成双,保留指定位数小数位数。 含义编辑 对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是“四舍六入五成双”,...

    sqlserver 四舍五入

    SQL Server提供了多种方法来实现数值的四舍五入,其中最常用的就是`ROUND`函数。本文将深入探讨SQL Server中的四舍五入方法,并通过具体的例子来展示其用法。 ### SQL Server中的四舍五入方法 #### ROUND函数 `...

    sqlserver四舍五入使用round函数及cast和convert函数

    在SQL Server中,进行数值四舍五入操作通常有多种方法,其中最常用的函数是`ROUND`,但也可以使用`CAST`和`CONVERT`函数来实现类似的效果。本文将详细探讨这三种方法以及它们在处理四舍五入时的特点。 `ROUND`函数...

    自己写的sql server四舍六入奇进偶不进的函数

    所谓的“四舍六入五单进”,是一种较为复杂的修约规则,它结合了传统四舍五入的优点,并在此基础上进行了优化,具体规则如下: 1. **四舍**:如果小数部分小于5,则直接舍去。 2. **六入**:如果小数部分等于6或者...

    自己写的Oracle四舍六入奇进偶不进的函数

    四舍六入五单进是一种特殊的数值修约规则,它与传统的四舍五入有所不同。具体来说,当数值的小数部分小于等于4时,则向0方向舍去;当小数部分大于或等于6时,则向最接近的方向进位;当小数部分恰好为5时,则采用特殊...

    sql小数点取值转换整理

    --遇到小数位就加1,非四舍五入 select CEILING(3.1) 结果为:4 --保留两位小数 1. 使用 Round() 函数,如 Round(@num,2) ,其中参数 2 表示 保留两位有效数字。 缺点:Round() 只是负责四舍五入到两位小数,但是不...

    sql 人民币大写转换函数

    取值为0表示不进行四舍五入,1表示保留两位小数并四舍五入,2表示保留两位小数但不进行四舍五入。 - `@intPrecision`:一个整型变量,默认值为2,用于设定数值的精度,即小数点后的位数,取值范围为0到4。 ### 功能...

    MySQL中ROUND函数进行四舍五入操作陷阱分析

    本文实例讲述了MySQL中ROUND函数进行四舍五入操作陷阱。分享给大家供大家参考,具体如下: 在MySQL中, ROUND 函数用于对查询结果进行四舍五入,不过最近使用ROUND函数四舍五入时意外发现并没有预期的那样,本文将这...

    计算2000年1月1日到现在有多少月,多少周(四舍五入)。

    由于题目要求四舍五入的结果,所以在这个例子中使用了 `ROUND` 函数来对结果进行四舍五入处理: ```sql ROUND(MONTHS_BETWEEN(SYSDATE, '01-1-00')) ``` #### 2. 计算周数 对于计算周数,题目中使用了一个简单的...

    很全面的SQL函数及例子

    1. **数值函数**:这类函数用于处理数字值,如`ABS()`返回绝对值,`ROUND()`进行四舍五入,`SQRT()`计算平方根。 2. **字符串函数**:处理文本数据,例如`CONCAT()`连接字符串,`LEFT()`和`RIGHT()`截取字符串,`...

    SQL函数.docx

    数值函数主要用于处理数字数据,实现诸如四舍五入、求绝对值等功能。 1. **Round函数**:用于对数字进行四舍五入。语法如下: ``` ROUND(number, m) ``` 示例: ```sql SELECT ROUND(13.14, 1), ROUND...

    oracle数字的四舍五入、去尾、收尾法

    通过对Oracle中`TRUNC()`、`ROUND()` 和 `CEIL()` 这三个函数的学习,我们可以灵活地根据实际需求对数值进行去尾、四舍五入和收尾操作。这三种方法在不同的应用场景下都有着广泛的应用,了解它们的工作原理和使用...

    SQL_函数SQL_函数SQL_函数SQL_函数

    13. **SQL ROUND() 函数**:用于四舍五入数字。`ROUND(number, decimal_places)` 可以指定保留的小数位数。 这些函数极大地增强了SQL查询的能力,使我们能够对数据库中的数据进行复杂分析和处理。在实际应用中,...

    sqlserver中常用函数

    - **ROUND()** 四舍五入。 - **ABS()** 绝对值。 - **SIGN()** 符号函数。 ```sql SELECT CEILING(3.14), FLOOR(3.14), ROUND(3.14, 1), ABS(-3.14), SIGN(-3.14); ``` #### 特殊函数 - **PI()** 返回圆周率π...

    MySQL之ROUND函数四舍五入的陷阱

    在MySQL中,ROUND函数用于对查询结果进行四舍五入,不过近使用ROUND函数四舍五入时意外发现并没有预期的那样,本文将这一问题记录下来,以免大家跟我一样犯同样的错误。  问题描述  假如我们有如下一个数据表...

    PL/SQL 常用函数

    ROUND 函数可以将数字四舍五入。例如,ROUND(salary, 2) 将 salary 四舍五入到小数点后 2 位。 4. 字符串定位函数 INSTR 函数可以查找字符串中某个字符的位置。例如,INSTR(ename, 'A', 1) 将查找ename 中 'A' 的...

Global site tag (gtag.js) - Google Analytics