大家好,今天来为大家解答Oracle数据库的四舍五入函数你真的了解吗?这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
1、环境介绍和准备
这里选择Oracle 11gR2版本进行测试。
SQL 从v$version 选择*;
测试不同类型的数据。
SQL从t中选择*;
2、四种基本取整函数
Oracle 中的四个取证函数是:ceil、floor、trunc 和round。每一种都有不同的含义和特点,适合不同的场景。
2.1、天花板
Ceil的原意是返回第一个大于当前值的整数。这里要注意一个“大”的概念。最简单的理解就是我们数学中的数轴。 Ceil 返回数轴上当前值右侧的第一个整数值。
SQL select id, ceil(id) from t;
这里我们主要关注负数的ceil结果,与我们直观的想法有些不同。并且ceil 不是圆形的。
2.2、地板
地板对应天花板,应该说是完全相反的。 ceil 取固定轴右侧的第一个整数值。 Floor 确定数轴左侧的第一个整数值,这是一个小动作。
SQL select id, Floor(id) from t;
Floor的作用是找到一个比当前值更小的整数。
2.3.截断
trunc 是一个“多用途”函数。我们习惯了它对日期类型的处理。当trunc输入参数为日期类型时,用于截取日后的时分秒信息。全部将按计划转换为00:00:00。但trunc面对数字类型输入时,也会截取小数点后的数字。
SQL select id, trunc(id) from t;
trunc 对于数字没有“四舍五入”的概念,而是直接“截断”数字。
2.4、圆形
严格来说,只有round才能真正具有“四舍五入”的选择动作。
SQL select id, round(id) from t;
只有round才有我们通常意义上的舍入动作。
3、取整函数的精度scale取值
其中一些舍入函数可以采用可选参数来指示设置精度。我们目前的数据状态如下:
SQL从t中选择*;
trunc 和round 可以支持函数缩放参数。
SQL select id, trunc(id,1), round(id,1) from t;如果设置为正数,则将处理返回的小数点后的位数。如果我们设置一个负数怎么办?
SQL select id, trunc(id,-1), round(id,-1) from t;
如果设置为负数,则截取小数点前的操作。
4、mod与remainder
mod 取余数。我们经常使用的“模”运算是基于取模运算的。取余器的作用也是取余。两者有什么区别?
SQL 从对偶中选择mod(11,4), 余数(11,4);SQL 从对偶中选择mod(0,4), 余数(0,4);SQL 选择mod(-11,4), 余数(-11) ,4) 从对偶;
当求余运算的两个参数都是整数时,我们基本上就明白问题是什么了。但一旦出现负数,无论是除数还是被除数,mod 的行为就与经典的余数模型有些不同。
SQL 从对偶中选择mod(-11,-4), 余数(-11,-4);SQL 从对偶中选择mod(11,-4), 余数(11,-4);
准确的说,mod的函数值为:n2-n1*floor(n2/n1)。因此,出现负数时要注意取模的问题。
余数也有余数的作用,那么有什么区别呢?关键点在于计算公式的下限。对于余数,Oracle不选择floor,而是选择round。
总结
Oracle 提供了许多自定义函数。正确正确地使用它们可以给我们带来很大帮助。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/198803.html
用户评论
微信名字
我最近在学习 Oracle 数据库的四种数字取整函数确实感觉很有用!尤其是 TRUNC 函数,用它处理浮点数的时候很方便。之前都不知道这些功能的存在,感谢这个博客介绍!
有12位网友表示赞同!
怅惘
了解Oracle数据库挺重要啊,这四个取整函数经常用到。感觉文章讲解得很清楚,而且还给出了详细的示例代码,对于我这种新手来说太实用了!
有20位网友表示赞同!
滴在键盘上的泪
作为一名 Oracle 开发者,我一直都使用 TRUNC 函数来进行浮点数四捨五入运算,却不知道还有 ROUND、FLOOR 和 CEIL 这些函数。今天看了你的博客,豁然开朗!以前的方法真是不够灵活啊。
有19位网友表示赞同!
最迷人的危险
你这篇文章写的很有深度,把数据库取整函数讲解得透彻而易懂。不过我觉得对于初学者来说,可以多提供些实际案例展示这四个函数的应用场景,这样会更加直观易懂。
有11位网友表示赞同!
爱你心口难开
我一直在用SQL Server,这篇博客让我觉得Oracle 的这些取整函数确实很有特色。我现在更想去学习一下Oracle数据库了!
有19位网友表示赞同!
迁心
这篇文章写得挺棒的,内容很实用!之前在写程序的时候遇到过类似的需求,但没有找到合适的函数来解决。看来要好好学习一下 Oracle 数据库的四个取整函数!
有14位网友表示赞同!
隔壁阿不都
讲道理,文章写的还是不错的,但我觉得对于这种基本知识,最好是在数据库入门教程中进行讲解,这样更加适合新手理解。
有17位网友表示赞同!
请在乎我1秒
这四个数字取整函数真是太有用啦!尤其是FLOOR 函数,能帮我们快速得到浮点数向下取整的结果。感谢博主分享这么好的信息!
有8位网友表示赞同!
素婉纤尘
文章提到的 ROUND 函数有时候也会产生意料之外的结果,大家使用的时候需要注意。我觉得可以再详细解释一下 ROUND 函数的规则和使用方法,帮助读者更好地理解!
有17位网友表示赞同!
慑人的傲气
感觉这篇文章缺少一些实际的代码实例,虽然讲解了函数的功能,但在具体应用场景下还是有点抽象。希望作者能够增加一些实际案例,让读者更容易理解和记忆这些函数的使用方法。
有17位网友表示赞同!
抚笙
很不错的一篇博文,帮助我理解了 Oracle 数据库中常见的取整函数,以后在项目开发中可以用到!
有5位网友表示赞同!
墨城烟柳
文章写的逻辑清晰,内容非常详细,对Oracle数据库的理解提升不少!强烈推荐给想要学习数据库的朋友们阅读。
有15位网友表示赞同!
日久见人心
这四个函数听起来很专业,我还没有接触过具体的使用场景,希望作者能提供更具体的案例讲解,这样我就更容易理解了!
有15位网友表示赞同!
冷落了♂自己·
我经常在数据处理中遇到需要取整的需求,看这篇博文终于找到了Oracle数据库中的合适的工具。非常感谢作者的分享!
有5位网友表示赞同!
海盟山誓总是赊
觉得文章写的不错,很适合新手学习Oracle数据库四种数字取整函数。希望能多更新一些实用技巧和案例分析!
有14位网友表示赞同!
残留の笑颜
之前一直没了解过这四个取整函数,这下知道了可以好好学一学了!感觉 Oracle 数据库的功能很多很有用,以后要多实践练习!
有18位网友表示赞同!
几妆痕
这篇文章虽然简单地介绍了四种取整函数,但我觉得没有深入到具体的应用场景。如果能结合实际项目进行讲解,效果会更好!
有8位网友表示赞同!
话扎心
学习一个新的数据库系统确实很需要时间,希望以后还能看到作者更多关于Oracle数据库的分享,比如一些更高级的操作技巧!
有18位网友表示赞同!