`
xitong
  • 浏览: 6185885 次
文章分类
社区版块
存档分类
最新评论

SQL小数点四舍五入(转)

 
阅读更多

方法1:

SELECT CAST('123.456' as decimal) 将会得到 123(小数点后面的将会被省略掉)。
如果希望得到小数点后面的两位。
则需要把上面的改为
SELECT CAST('123.456' as decimal(38, 2)) ===>123.46

说明1:

这里的decimal英文为: 小数, 十进制
decimal(38,2)
这里的38是这个小数的位数有多少位, 一般最大不超过38位, 所以写38是不会出错的!
如果:
SELECT CAST('123.456' as decimal(2, 2))
就会出错, 为什么呢, 因为这个123.456小数点后是3位值, 所以这个38这个位置最少是3!

说明2:
decimal后面的参数中的2是小数点后取几位, 是2就取两位, 是3就取三位! 并且是四舍五入后的结果!

说明3:
cast应该就是转换数值的意思了


自动四舍五入了!

方法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

==================================================== 【四舍五入取整截取】

select round(54.56,0)

==================================================== 【向下取整截取】

SELECT FLOOR(54.56)

==================================================== 【向上取整截取】

SELECT CEILING(13.15)


分享到:
评论

相关推荐

    SQL中的小数点后的四舍五入

    SQL中的小数点后的四舍五入,适合出入门的朋友,里面有详细的举例,一看即明白。

    sql小数点取值转换整理

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

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

    引言 ... 那么用到四舍五入并且保留小数点时我们肯定会首选ROUND函数, 如果字段的数据类型是decimal(18,10)时那么四舍五入后还会有很多0出现。 CAST和CONVERT  其实我使用强转时并没有打算四舍五入

    JS保留两位小数 四舍五入函数的小例子

    js 四舍五入函数 toFixed(),里面的参数 就是保留小数的位数。 代码如下:[removed] [removed](“<h1>JS保留两位小数例子</h1><br>”); var a=2.1512131231231321; [removed](“原来的值:”+a+” ”); ...

    SQL_Sever数据库常用语句大全.zip

    round函数保留指定位数小数点(指定位数后四舍五入) sign函数判断正数负数和零 sqrt平方根函数 convert转换数据类型函数 CURRENT_USER返回当前用户名字 datalength返回双字符串字节长度(一个中文2个字节) Host_...

    PL/SQL number型数据

    s正数,小数点右边指定位置开始四舍五入s负数,小数点左边指定位置开始四舍五入s是0或者未指定,四舍五入到最近整数当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p 位必须是0,保留s位小数...

    SQL(三)

    ROUND 四舍五入 round(arg1,arg2) arg1 :表示要进行四舍五入操作的数字 arg2 :第二个参数表示保留到哪一位 保留到小数点后面 2 位 select round(45.926,2) from dual; 45.93 保留到个位 (个十百千万…) select ...

    SQL学习笔记七函数 数字,日期,类型转换,空值处理,case

    ROUND():四舍五入 ROUND(A,B)A是要处理的数,B是精确到小数点后第几位 LEN():计算字符串长度 LOWER()、UPPER():转小写、大写 LTRIM():字符串左侧的空格去掉 RTRIM():字符串右侧的空格去掉 SUBSTRING(string,start_...

    2009达内SQL学习笔记

    四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用) 当从多张表里查询的时候,会产生笛卡尔积;可用条件...

    与MSSQL对比学习MYSQL的心得(六)–函数

    数学函数 1、求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 SELECT MOD(31,8) ...TIPS:ROUND(X,Y)函数在截取值的时候会四舍五入,

    软件测试-MySQL(六:数据库函数)

    ROUND(x,y)对操作苏进行四舍五入操作,保留小数点后y位,y为负数则保留小数点左边y位 RAND(x) 返回随机数 x相同时返回随机数相同 TURNCATE(x,y) 返回x保留y位小数 ABS(X) 返回x的绝对值 MOD(X,Y) 返回X被Y除以...

    C#编程经验技巧宝典

    数据处理 91 <br>5.1 数字处理技巧 92 <br>0140 如何对计算结果四舍五放入 92 <br>0141 如何将商品金额小写转换成大写 92 <br>0142 如何根据生日自动计算员工年龄 93 <br>0143 如何设置...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    N表示小数点右边数字的位数 日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 ...

    ABAP中文幫助文檔

     定点算术:如果设置此属性,系统则根据小数点位数将类型P字段四舍五入,或用零填补(关于类型P字段的详细信息,参见《数字数据类型》)。这种情况下,无论在用户主记录中指定了什么,小数点字符总是句点(.)。  ...

    java常用工具类的使用

    该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒值表示为SQL DATE值,是数据库操作中java.sql.Date的父类。关于数据库...

    整理后java开发全套达内学习笔记(含练习)

    float 32bit, 9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算) double 64bit, 18位有效数字 注:float 和 double 的小数部分不可能精确,只能近似。 比较小数时,用 double i=0.01; if ( i - 0.01 ) ...

    精髓Oralcle讲课笔记

    --(将平均薪水四舍五入到小数点后2位) 50、select sum(sal) from emp; --(求出每个月要支付的总薪水) ------------------------/组函数(共5个):将多个条件组合到一起最后只产生一个数据------min() max() ...

Global site tag (gtag.js) - Google Analytics