PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.3. 数学函数和操作符

简介: 9.3. 数学函数和操作符 PostgreSQL为很多类型提供了数学操作符。对于那些没有标准数学表达的类型(如日期/时间类型),我们将在后续小节中描述实际的行为。 表 9.4展示了所有可用的数学操作符。

9.3. 数学函数和操作符

PostgreSQL为很多类型提供了数学操作符。对于那些没有标准数学表达的类型(如日期/时间类型),我们将在后续小节中描述实际的行为。

表 9.4展示了所有可用的数学操作符。

表 9.4. 数学操作符

操作符 描述 例子 结果
+ 2 + 3 5
- 2 - 3 -1
* 2 * 3 6
/ 除(整数除法截断结果) 4 / 2 2
% 模(取余) 5 % 4 1
^ 指数 2.0 ^ 3.0 8
|/ 平方根 |/ 25.0 5
||/ 立方根 ||/ 27.0 3
! 阶乘 5 ! 120
!! 阶乘(前缀操作符) !! 5 120
@ 绝对值 @ -5.0 5
& 按位与 91 & 15 11
| 按位或 32 | 3 35
# 按位异或 17 # 5 20
~ 按位求反 ~1 -2
<< 按位左移 1 << 4 16
>> 按位右移 8 >> 2 2

按位操作操作符只能用于整数数据类型,而其它的操作符可以用于全部数字数据类型。按位操作的操作符还可以用于位串类型bitbit varying, 如表 9.13所示。

表 9.5显示了可用的数学函数。在该表中,dp表示double precision。这些函数中有许多都有多种不同的形式,区别是参数不同。除非特别指明,任何特定形式的函数都返回和它的参数相同的数据类型。 处理double precision数据的函数大多数是在宿主系统的 C 库基础上实现的;因此,边界情况下的准确度和行为是根据宿主系统而变化的。

表 9.5. 数学函数

函数 返回类型 描述 例子 结果
abs(x) (和输入相同) 绝对值 abs(-17.4) 17.4
cbrt(dp) dp 立方根 cbrt(27.0) 3
ceil(dp or numeric) (和输入相同) 不小于参数的最小整数 ceil(-42.8) -42
ceiling(dp or numeric) (和输入相同) 不小于参数的最小整数(ceil的别名) ceiling(-95.3) -95
degrees(dp) dp 把弧度转为角度 degrees(0.5) 28.6478897565412
div(y numericx numeric) numeric y/x的整数商 div(9,4) 2
exp(dp or numeric) (和输入相同) 指数 exp(1.0) 2.71828182845905
floor(dp or numeric) (和输入相同) 不大于参数的最大整数 floor(-42.8) -43
ln(dp or numeric) (和输入相同) 自然对数 ln(2.0) 0.693147180559945
log(dp or numeric) (和输入相同) 以10为底的对数 log(100.0) 2
log(b numericx numeric) numeric b为底的对数 log(2.0, 64.0) 6.0000000000
mod(yx) (和参数类型相同) y/x的余数 mod(9,4) 1
pi() dp π常数 pi() 3.14159265358979
power(a dpb dp) dp ab次幂 power(9.0, 3.0) 729
power(a numericb numeric) numeric ab次幂 power(9.0, 3.0) 729
radians(dp) dp 把角度转为弧度 radians(45.0) 0.785398163397448
round(dp or numeric) (和输入相同) 圆整为最接近的整数 round(42.4) 42
round(v numerics int) numeric 圆整为s位小数数字 round(42.4382, 2) 42.44
scale(numeric) integer 参数的精度(小数点后的位数) scale(8.41) 2
sign(dp or numeric) (和输入相同) 参数的符号(-1, 0, +1) sign(-8.4) -1
sqrt(dp or numeric) (和输入相同) 平方根 sqrt(2.0) 1.4142135623731
trunc(dp or numeric) (和输入相同) 截断(向零靠近) trunc(42.8) 42
trunc(v numerics int) numeric 截断为s位小数位置的数字 trunc(42.4382, 2) 42.43
width_bucket(operand dpb1dpb2 dpcount int) int 返回一个桶,这个桶是在一个有count个桶, 上界为b1,下界为b2的柱图中operand将被赋予的那个桶。为外部范围输入返回0或者count+1 width_bucket(5.35, 0.024, 10.06, 5) 3
width_bucket(operand numericb1 numericb2 numericcountint) int 返回一个桶,这个桶是在一个有count个桶,上界为b1,下界为b2的柱图中operand将被赋予的那个桶; 为范围外的输入返回0或者count+1 width_bucket(5.35, 0.024, 10.06, 5) 3
width_bucket(operandanyelementthresholdsanyarray) int 返回一个桶,它是给定数组列出桶的下限operand将被赋予的那个桶, 为了输入低于第一下界返回0thresholds数组必须被存储, 首先最小值,或者获取意想不到的结果 width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[]) 2

表 9.6展示了用于产生随机数的函数。

表 9.6. 随机函数

函数 返回类型 描述
random() dp 范围 0.0 <= x < 1.0 中的随机值
setseed(dp) void 为后续的random()调用设置种子(值为于 -1.0 和 1.0 之间,包括边界值)

random()返回的值的特征取决于系统实现。 它不适合用于加密应用,如果需要用于加密应用请参考pgcrypto模块。

最后,表 9.7显示了可用的三角函数。所有三角函数都有类型为double precision的参数和返回类型。三角函数参数表示为弧度。反函数返回表示为弧度的值。参见上述的转换函数radians()degrees()

表 9.7. 三角函数

函数 (弧度) 函数 (角度) 描述
acos(x) acosd(x) 反余弦
asin(x) asind(x) 反正弦
atan(x) atand(x) 反正切
atan2(yx) atan2d(yx) y/x的反正切
cos(x) cosd(x) 余弦
cot(x) cotd(x) 余切
sin(x) sind(x) 正弦
tan(x) tand(x) 正切

注意

另一种使用以角度度量的角的方法是使用早前展示的单位转换函数 radians()degrees()。不过, 使用基于角度的三角函数更好,因为这类方法能避免sind(30)等特殊情况下的舍入偏差。

本文转自PostgreSQL中文社区,原文链接:9.3. 数学函数和操作符

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
SQL 数据管理 关系型数据库
SQL 语言入门:开启数据管理的大门
在数字化时代,数据已成为核心资产,而 SQL 作为操作关系型数据库的标准语言,是数据从业者、程序员及办公人员必备技能。本文从基础概念讲起,详解 SQL 的核心用法,包括数据查询、插入、修改、删除及表结构操作,并通过实例演示帮助读者快速上手。掌握 SQL,不仅能提升数据处理效率,更为深入理解数据管理打下坚实基础。
|
5月前
|
SQL Oracle 关系型数据库
SQL语言小结
针对数据库、表单和数据行的增删改,没有涉及到sql真正的用途也就是查询,sql提供的查询语句的关键字占 sql 语言的一半之多,查询语句还是得单拿出来讲,不然太多了。 因为没有涉及到查询,所以sql的新增和修改都是很笼统的做法,drop、alter drop、delete这些很容易,逻辑性也不强,再次说明sql的真正精髓在于查询,不然为啥叫做结构化查询语言
359 0
|
5月前
|
SQL 关系型数据库 MySQL
(SQL)SQL语言中的查询语句整理
查询语句在sql中占了挺大一部分篇幅,因为在数据库中使用查询语句的次数远多于更新与删除命令。而查询语句比起其他语句要更加的复杂,可因为sql是数据库不可或缺的一部分,所以即使不懂,也必须得弄懂,以上。
334 0
|
7月前
|
SQL 人工智能 数据挖掘
如何在`score`表中正确使用`COUNT`和`AVG`函数?SQL聚合函数COUNT与AVG使用指南
本文三桥君通过score表实例解析SQL聚合函数COUNT和AVG的常见用法。详解COUNT(studentNo)、COUNT(score)、COUNT()的区别,以及AVG函数对数值/字符型字段的不同处理,特别指出AVG()是无效语法。实战部分提供6个典型查询案例及结果,包含创建表、插入数据的完整SQL代码。产品专家三桥君强调正确理解函数特性(如空值处理、字段类型限制)对数据分析的重要性,帮助开发者避免常见误区,提升查询效率。
397 0
|
12月前
|
SQL 存储 缓存
YashanDB SQL语言
YashanDB SQL语言
|
SQL 数据可视化 IDE
SQL做数据分析的困境,查询语言无法回答的真相
SQL 在简单数据分析任务中表现良好,但面对复杂需求时显得力不从心。例如,统计新用户第二天的留存率或连续活跃用户的计算,SQL 需要嵌套子查询和复杂关联,代码冗长难懂。Python 虽更灵活,但仍需变通思路,复杂度较高。相比之下,SPL(Structured Process Language)语法简洁、支持有序计算和分组子集保留,具备强大的交互性和调试功能,适合处理复杂的深度数据分析任务。SPL 已开源免费,是数据分析师的更好选择。
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
296 3
|
SQL Cloud Native 关系型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
2047 1
|
数据可视化 关系型数据库 MySQL
将 PostgreSQL 迁移到 MySQL 数据库
将 PostgreSQL 迁移到 MySQL 数据库
2768 2
|
SQL 存储 自然语言处理
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
在当今社交媒体的时代,人们通过各种平台分享自己的生活、观点和情感。然而,对于平台管理员和品牌经营者来说,了解用户的情感和意见变得至关重要。为了帮助他们更好地了解用户的情感倾向,我们可以使用PostgreSQL中的pg_jieba插件对这些发帖进行分词和情感分析,来构建一个社交媒体情感分析系统,系统将根据用户的发帖内容,自动判断其情感倾向是积极、消极还是中性,并将结果存储在数据库中。
1258 1
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词