暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL学习实践|数学函数及其操作(一)

178

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.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);    -- 返回 124
 CEILING(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靠拢。


总结

好了,时间不早了,参考原文写到这里,实践得真知,每天学习一点,慢慢来,学习之旅正在路上。每次都写不完,没有时间来写一些简单的测试,也希望想学习的都可以自己测试下。



[引用]

  1. https://www.postgresql.org/docs/current/functions-math.html
最后修改时间:2024-10-21 17:35:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论