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

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

156

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. 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)对于负数的被除数或者负数的除数,余数是如何呢?有兴趣的小伙伴可以试试。

1.2. POWER() - 乘方(幂运算)

返回一个数的指定次方。在数学中,幂运算是一种基本的算术运算,它表示一个数被自身重复相乘的次数。幂运算通常表示为 an ,其中 a 是底数,n 是指数,表示底数 a 需要被乘以其自身的次数。而在SQL的函数运算中,则表示为POWER(a, b),其中a为底数,b为指数,例如 8 = 42 。幂运算在数学、物理、工程、计算机科学等领域中都有广泛的应用,而我们在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

1.3. SQRT() - 计算平方根

返回一个数的平方根。在数学概念上,如果一个数 x 的平方等于 a,即 x2 =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

当然,我们可以尝试下负数,则会提示下面的信息:

错误:不能取负数的平方根

1.4. CBRT() - 计算立方根

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

SELECT CBRT(27);  -- 返回 3

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

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

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

1.6. LN() - 计算自然对数

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

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

1.7. 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)

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

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

SELECT PI();  -- 返回 3.141592653589793


总结

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


[引用]

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





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

文章被以下合辑收录

评论