文章目录
- 引言
- 1.1 ABS() - 取绝对值
- 1.2 CEIL() 或 CEILING() - 向上取整
- 1.3 FLOOR() - 向下取整
- 1.4 ROUND() - 四舍五入
- 1.5 TRUNC() - 截断/截取小数
- 总结
📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师
🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者、腾讯云TDP-KOL、ACDU成员、墨天轮技术专家博主
🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~
引言
PostgreSQL是一种非常强大的开源关系数据库管理系统,前面已有介绍,可以参考博主其他博文。它提供了一系列的数学函数,以便用户可以执行各种复杂的数学运算。
当前所有测试均以PostgreSQL 14为蓝本测试,其他版本可能有差异,请酌情参考。
PostgreSQL 14.13 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
1.1 ABS() - 取绝对值
返回数字的绝对值,正数的绝对值是正数,负数的绝对值是其相反数。
SELECT ABS(-100); -- 返回 100
SELECT ABS(6.54); -- 返回 6.54
1.2 CEIL() 或 CEILING() - 向上取整
返回大于等于指定数字的最小整数。如果参考过博主的其他Oracle相关的文章,可以查看这种计算逻辑,例如一个数为default_1=123.5,使用CEIL函数或者CEILING函数之后的数据应该是124。相对的函数为FLOOR。
CEIL()
或 CEILING()
函数在使用上没有什么区别,都是一样。至于使用哪一个,全凭爱好。
SELECT CEIL(123.5); -- 返回 124CEILING(123.5); -- 返回 124
1.3 FLOOR() - 向下取整
返回小于等于指定数字的最大整数。可以参考CEIL函数。
SELECT FLOOR(123.5); -- 返回 123
SELECT FLOOR(-123.5); -- 返回 -124
1.4 ROUND() - 四舍五入
对数值进行四舍五入,可以指定小数点后的位数,不指定小数时等同于指定小数位数为0的情况。从官网的测试情况如下面所展示,留意负数位数的情况(感觉有点BT,但是又感觉很有道理)。
-- 四舍五入为整数
SELECT ROUND(3.14159); -- 返回 3-- 保留两位小数
SELECT ROUND(3.14159, 2); -- 返回 3.14-- 四舍五入为整数,保留小数位数为 0
SELECT ROUND(3.14159, 0); -- 返回 3-- 保留小数位数为2,那么没有数值则需要补充0,例如 0.00
SELECT ROUND(314, 2); -- 返回 314.00-- 如果保留位数为负数,那么就从小数点向前推进负数值的个数,然后补充0,
-- 例如13.14159,保留为-1,那么小数点向前一位,3就置为0,成为10。
SELECT ROUND(13.14159, -1) -- 返回 10
SELECT ROUND(1234.56, -2) -- 返回 1200
为了更方便测试,此处写在一起,并给予测试结果:
-- 四舍五入函数ROUND
SELECT ROUND(3.14159) AS val_1, ROUND(3.14159, 2) AS val_2, ROUND(3.14159, 0) AS val_3,ROUND(314, 2) AS val_4,ROUND(13.14159, -1) AS val_5,ROUND(1234.56, -2) AS val_6;
1.5 TRUNC() - 截断/截取小数
将数字截断为指定的精度,而不进行四舍五入。TRUNC函数主要用于截取数字或日期,并返回整数或指定格式的日期。
【用法】
数字截取:TRUNC(number, [decimal_places])
【参数说明】
number:要截断的数字。
decimal_places:可选参数,表示要截断的小数位数。该值必须是正整数或负整数。
注意⚠️:如果decimal_places是正数,则从小数点后开始截断;如果decimal_places是负数,则从整数部分开始向左截断。
【示例】
下面针对一些情况做了一些测试,其实也可以测试下一些整数的切割。
SELECT TRUNC(125.315) as val_1, TRUNC(125.315, 0) as val_2, TRUNC(125.315, 1) as val_3, TRUNC(125.315, 2) as val_4, TRUNC(125.315, -1) as val_5, TRUNC(125.315, -2) as val_6,TRUNC(-125.315) as val_7;
理解一些含义对于这个函数就很好使用了,TRUNC函数并不进行四舍五入操作,而是直接截断小数部分。对于整数值,TRUNC函数会保持其整数部分不变。对于浮点数值,TRUNC函数会将其小数部分截断为0。对于负数,TRUNC函数会向0的方向取整,即截断后的结果会向0靠拢。
总结
好了,时间不早了,参考原文写到这里,实践得真知,每天学习一点,慢慢来,学习之旅正在路上。
[引用]
- https://www.postgresql.org/docs/current/functions-math.html
欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。