文章目录
📫 作者简介:「六月暴雪飞梨花」,专注于研究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
总结
好了,时间不早了,参考原文写到这里,实践得真知,每天学习一点,慢慢来,学习之旅正在路上。
[引用]
- https://www.postgresql.org/docs/current/functions-math.html
欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。