问题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
分享到:
相关推荐
注:修约时看保留小数的后一位为5时进行修约,其他按四舍五入情况。 修约:五后皆零看奇偶,修约看5前面那一位数,五前为偶应舍去,五前为奇要进一。 例: 0.4451 保留两位 0.45 例: 0.445 保留两位 0.44 例: 0.435 ...
sqlserver函数实现四舍六入五成双,保留指定位数小数位数。 含义编辑 对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是“四舍六入五成双”,...
SQL Server提供了多种方法来实现数值的四舍五入,其中最常用的就是`ROUND`函数。本文将深入探讨SQL Server中的四舍五入方法,并通过具体的例子来展示其用法。 ### SQL Server中的四舍五入方法 #### ROUND函数 `...
所谓的“四舍六入五单进”,是一种较为复杂的修约规则,它结合了传统四舍五入的优点,并在此基础上进行了优化,具体规则如下: 1. **四舍**:如果小数部分小于5,则直接舍去。 2. **六入**:如果小数部分等于6或者...
在SQL Server中,进行数值四舍五入操作通常有多种方法,其中最常用的函数是`ROUND`,但也可以使用`CAST`和`CONVERT`函数来实现类似的效果。本文将详细探讨这三种方法以及它们在处理四舍五入时的特点。 `ROUND`函数...
四舍六入五单进是一种特殊的数值修约规则,它与传统的四舍五入有所不同。具体来说,当数值的小数部分小于等于4时,则向0方向舍去;当小数部分大于或等于6时,则向最接近的方向进位;当小数部分恰好为5时,则采用特殊...
--遇到小数位就加1,非四舍五入 select CEILING(3.1) 结果为:4 --保留两位小数 1. 使用 Round() 函数,如 Round(@num,2) ,其中参数 2 表示 保留两位有效数字。 缺点:Round() 只是负责四舍五入到两位小数,但是不...
通过对Oracle中`TRUNC()`、`ROUND()` 和 `CEIL()` 这三个函数的学习,我们可以灵活地根据实际需求对数值进行去尾、四舍五入和收尾操作。这三种方法在不同的应用场景下都有着广泛的应用,了解它们的工作原理和使用...
取值为0表示不进行四舍五入,1表示保留两位小数并四舍五入,2表示保留两位小数但不进行四舍五入。 - `@intPrecision`:一个整型变量,默认值为2,用于设定数值的精度,即小数点后的位数,取值范围为0到4。 ### 功能...
本文实例讲述了MySQL中ROUND函数进行四舍五入操作陷阱。分享给大家供大家参考,具体如下: 在MySQL中, ROUND 函数用于对查询结果进行四舍五入,不过最近使用ROUND函数四舍五入时意外发现并没有预期的那样,本文将这...
由于题目要求四舍五入的结果,所以在这个例子中使用了 `ROUND` 函数来对结果进行四舍五入处理: ```sql ROUND(MONTHS_BETWEEN(SYSDATE, '01-1-00')) ``` #### 2. 计算周数 对于计算周数,题目中使用了一个简单的...
1. **数值函数**:这类函数用于处理数字值,如`ABS()`返回绝对值,`ROUND()`进行四舍五入,`SQRT()`计算平方根。 2. **字符串函数**:处理文本数据,例如`CONCAT()`连接字符串,`LEFT()`和`RIGHT()`截取字符串,`...
数值函数主要用于处理数字数据,实现诸如四舍五入、求绝对值等功能。 1. **Round函数**:用于对数字进行四舍五入。语法如下: ``` ROUND(number, m) ``` 示例: ```sql SELECT ROUND(13.14, 1), ROUND...
- **ROUND()** 四舍五入。 - **ABS()** 绝对值。 - **SIGN()** 符号函数。 ```sql SELECT CEILING(3.14), FLOOR(3.14), ROUND(3.14, 1), ABS(-3.14), SIGN(-3.14); ``` #### 特殊函数 - **PI()** 返回圆周率π...
在MySQL中,ROUND函数用于对查询结果进行四舍五入,不过近使用ROUND函数四舍五入时意外发现并没有预期的那样,本文将这一问题记录下来,以免大家跟我一样犯同样的错误。 问题描述 假如我们有如下一个数据表...
ROUND 函数可以将数字四舍五入。例如,ROUND(salary, 2) 将 salary 四舍五入到小数点后 2 位。 4. 字符串定位函数 INSTR 函数可以查找字符串中某个字符的位置。例如,INSTR(ename, 'A', 1) 将查找ename 中 'A' 的...
举例来说,ROUND函数和TRUNC函数都可以进行数值的格式化,不同点在于ROUND在指定位置进行四舍五入,而TRUNC是直接截断。 了解和掌握这些SQL内置函数对于数据库设计、数据查询、数据统计和数据处理具有非常重要的...