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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
SQL 人工智能 数据挖掘
如何在`score`表中正确使用`COUNT`和`AVG`函数?SQL聚合函数COUNT与AVG使用指南
本文三桥君通过score表实例解析SQL聚合函数COUNT和AVG的常见用法。详解COUNT(studentNo)、COUNT(score)、COUNT()的区别,以及AVG函数对数值/字符型字段的不同处理,特别指出AVG()是无效语法。实战部分提供6个典型查询案例及结果,包含创建表、插入数据的完整SQL代码。产品专家三桥君强调正确理解函数特性(如空值处理、字段类型限制)对数据分析的重要性,帮助开发者避免常见误区,提升查询效率。
286 0
|
6月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
725 2
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
530 5
|
关系型数据库 Serverless 定位技术
PostgreSQL GIS函数判断两条线有交点的函数是什么?
PostgreSQL GIS函数判断两条线有交点的函数是什么?
888 60
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
214 3
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
2355 5
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
235 0
|
存储 SQL 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.9. GIN 和 GiST 索引类型
12.9. GIN 和 GiST 索引类型 有两种索引可以被用来加速全文搜索。注意全文搜索并非一定需要索引,但是在一个定期会被搜索的列上,通常需要有一个索引。 CREATE INDEX name ON table USING GIN(column); 创建一个基于 GIN(通用倒排索引)的索引。
1756 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 11 章 索引_11.2. 索引类型
11.2. 索引类型 PostgreSQL提供了多种索引类型: B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN。每一种索引类型使用了 一种不同的算法来适应不同类型的查询。
1447 0

热门文章

最新文章

推荐镜像

更多