PG实践|数学函数及其操作(二)

📫 作者简介:「六月暴雪飞梨花」,专注于研究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

在这里插入图片描述

MOD() - 取模(取余数)

返回两数相除后的余数。数学概念上一个数被另一个数除后剩余的部分。
在这里插入图片描述

【语法】

mod ( y numeric_type, x numeric_type ) → numeric_type

【释义】
y/x的余数;可用于小数、整数、大数和数字,用法见于数学计算%

-- 也可以使用 % 操作符
SELECT MOD(11, 2) as val_1, 
  MOD(11, 3.5) as val_2, 
  (11 % 4) as val_3,  
  (11 % 12) as val_4,
	(11.5 % 12) as val_5;  

在这里插入图片描述
注意⚠️:
(1)余数总是小于等于除数,这个取决于被除数的大小。
(2)对于负数的被除数或者负数的除数,余数是如何呢?有兴趣的小伙伴可以试试。

POWER() - 乘方(幂运算)

返回一个数的指定次方。在数学中,幂运算是一种基本的算术运算,它表示一个数被自身重复相乘的次数。幂运算通常表示为 a ^n ,其中 a 是底数,n 是指数,表示底数 a 需要被乘以其自身的次数。而在SQL的函数运算中,则表示为POWER(a, b),其中a为底数,b为指数,例如 8 = 4 ^2 。幂运算在数学、物理、工程、计算机科学等领域中都有广泛的应用,而我们在IT信息系统中,则应用较少。

【语法】

power ( a numeric, b numeric ) → numeric
power ( a double precision, b double precision ) → double precision

【示例】

SELECT 
  POWER(2, 3) as val_1, POWER(5, 2) as val_2,  				-- 返回 8、25
  POWER(1.2, 2.2) as val_3, POWER(4.2, 2.2) as val_4,	-- 返回 小数
  POWER(-4, -2) as val_5;  														-- 返回 0.0625

在这里插入图片描述

SQRT() - 计算平方根

返回一个数的平方根。在数学概念上,如果一个数 x 的平方等于 a,即 x ^2 =a,那么 x 叫做 a 的平方根,通常,当我们说“平方根”时,我们指的是非负的那个平方根,即算术平方根。

【语法】

sqrt ( numeric ) → numeric
sqrt ( double precision ) → double precision

【示例】

SELECT SQRT(4) as val_1, SQRT(5) as val_2;   -- 返回 2, 2.23606797749979

在这里插入图片描述
当然,我们可以尝试下负数,则会提示下面的信息:
错误:不能取负数的平方根
在这里插入图片描述

CBRT() - 计算立方根

这个就更显而易见的了,返回一个数的立方根,此处不在赘述。

SELECT CBRT(27);  -- 返回 3

EXP() - 计算自然指数函数

返回 e 的指定次方,在数学中,自然指数函数定义为:f(x)=e^ x,其中 e 是自然对数的底数,是一个无理数e 是自然对数的底数(约为 2.718)。这个在一般的IT信息系统中很少使用,个人认为可以忽略不计,除非你要做一些教育类型的系统可能涉及到,这个函数在微积分、物理学、工程学、经济学等多个领域都有广泛的应用。

SELECT EXP(1);   -- 返回 2.718281828459045
SELECT EXP(2);   -- 返回 7.3890560989306495

LN() - 计算自然对数

在了解自然指数函数后,这个LN函数同EXP函数如出一辙(大部分时间用不到),返回一个数的自然对数(底数为 e 的对数)。
在这里插入图片描述

SELECT LN(2.718281828459045);  -- 返回 1
SELECT LN(10);                 -- 返回 2.302585092994046

LOG() - 计算对数

计算指定底数的对数,如果不指定底数,默认为 10。还有一个等同于底数为10的对数函数LOG10。
在这里插入图片描述
【语法】

log ( numeric ) → numeric、log10 ( numeric ) → numeric
log ( double precision ) → double precision、log10 ( double precision ) → double precision
log ( b numeric, x numeric ) → numeric 以b为底数x的对数

【示例】

-- 对数计算
SELECT LOG(10) as val_1, 
  LOG10(100) as val_2, 
  LOG(10, 10) as val_3, 
  LOG(4, 2) as val_4 ; 

在这里插入图片描述

LOG(10, 10)等同于LOG(10),保留位数不一样(虽然如此,但是在使用=比较时,又是true)。SELECT LOG(10)=LOG(10, 10); 返回的结果为 t 。如果想要使用LOG之间的转换,可以使用下面的对等套用即可。
LOG10(number) = LOG(number) / LOG(10)

PI() - 返回圆周率(π)

数学无限不循环小数,返回常数 π(此处返回 π 的近似值,保留小数位为小数点后15位)。

SELECT PI();  -- 返回 3.141592653589793

总结

好了,时间不早了,参考原文写到这里,实践得真知,每天学习一点,慢慢来,学习之旅正在路上。


[引用]

  1. https://www.postgresql.org/docs/current/functions-math.html

欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六月暴雪飞梨花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值