PostgreSQL 常用函数

2023年 4月 14日 72.8k 0

PostgreSQL 内置函数也称为聚合函数,用于对字符串或数字数据执行处理。 下面是所有通用 PostgreSQL 内置函数的列表: COUNT 函数:用于计算数据库表中的行数。 MAX 函数:用于查询某一特

PostgreSQL 内置函数也称为聚合函数,用于对字符串或数字数据执行处理。

下面是所有通用 PostgreSQL 内置函数的列表:

COUNT 函数:用于计算数据库表中的行数。
MAX 函数:用于查询某一特定列中最大值。
MIN 函数:用于查询某一特定列中最小值。
AVG 函数:用于计算某一特定列中平均值。
SUM 函数:用于计算数字列所有值的总和。
ARRAY 函数:用于输入值(包括null)添加到数组中。
Numeric 函数:完整列出一个 SQL 中所需的操作数的函数。
String 函数:完整列出一个 SQL 中所需的操作字符的函数。

数学函数

下面是PostgreSQL中提供的数学函数列表,需要说明的是,这些函数中有许多都存在多种形式,区别只是参数类型不同。除非特别指明,任何特定形式的函数都返回和它的参数相同的数据类型。

函数
返回类型
描述
例子
结果

abs(x)

绝对值
abs(-17.4)
17.4

cbrt(double)

立方根
cbrt(27.0)
3

ceil(double/numeric)

不小于参数的最小的整数
ceil(-42.8)
-42

degrees(double)

把弧度转为角度
degrees(0.5)
28.6478897565412

exp(double/numeric)

自然指数
exp(1.0)
2.71828182845905

floor(double/numeric)

不大于参数的最大整数
floor(-42.8)
-43

ln(double/numeric)

自然对数
ln(2.0)
0.693147180559945

log(double/numeric)

10为底的对数
log(100.0)
2

log(b numeric,x numeric)
numeric
指定底数的对数
log(2.0, 64.0)
6.0000000000

mod(y, x)

取余数
mod(9,4)
1

pi()
double
"π"常量
pi()
3.14159265358979

power(a double, b double)
double
求a的b次幂
power(9.0, 3.0)
729

power(a numeric, b numeric)
numeric
求a的b次幂
power(9.0, 3.0)
729

radians(double)
double
把角度转为弧度
radians(45.0)
0.785398163397448

random()
double
0.0到1.0之间的随机数值
random()

round(double/numeric)

圆整为最接近的整数
round(42.4)
42

round(v numeric, s int)
numeric
圆整为s位小数数字
round(42.438,2)
42.44

sign(double/numeric)

参数的符号(-1,0,+1)
sign(-8.4)
-1

sqrt(double/numeric)

平方根
sqrt(2.0)
1.4142135623731

trunc(double/numeric)

截断(向零靠近)
trunc(42.8)
42

trunc(v numeric, s int)
numeric
截断为s小数位置的数字
trunc(42.438,2)
42.43

三角函数列表

函数
描述

acos(x)
反余弦

asin(x)
反正弦

atan(x)
反正切

atan2(x, y)
正切 y/x 的反函数

cos(x)
余弦

cot(x)
余切

sin(x)
正弦

tan(x)
正切

字符串函数和操作符

下面是 PostgreSQL 中提供的字符串操作符列表:

函数
返回类型
描述
例子
结果

string 丨丨 string
text
字串连接
'Post' 丨丨 'greSQL'
PostgreSQL

bit_length(string)
int
字串里二进制位的个数
bit_length('jose')
32

char_length(string)
int
字串中的字符个数
char_length('jose')
4

convert(string using conversion_name)
text
使用指定的转换名字改变编码。
convert('PostgreSQL' using iso_8859_1_to_utf8)
'PostgreSQL'

lower(string)
text
把字串转化为小写
lower('TOM')
tom

octet_length(string)
int
字串中的字节数
octet_length('jose')
4

overlay(string placing string from int [for int])
text
替换子字串
overlay('Txxxxas' placing 'hom' from 2 for 4)
Thomas

position(substring in string)
int
指定的子字串的位置
position('om' in 'Thomas')
3

substring(string [from int] [for int])
text
抽取子字串
substring('Thomas' from 2 for 3)
hom

substring(string from pattern)
text
抽取匹配 POSIX 正则表达式的子字串
substring('Thomas' from '…$')
mas

substring(string from pattern for escape)
text
抽取匹配SQL正则表达式的子字串
substring('Thomas' from '%#"o_a#"_' for '#')
oma

trim([leading丨trailing 丨 both] [characters] from string)
text
从字串string的开头/结尾/两边/ 删除只包含characters(默认是一个空白)的最长的字串
trim(both 'x' from 'xTomxx')
Tom

upper(string)
text
把字串转化为大写。
upper('tom')
TOM

ascii(text)
int
参数第一个字符的ASCII码
ascii('x')
120

btrim(string text [, characters text])
text
从string开头和结尾删除只包含在characters里(默认是空白)的字符的最长字串
btrim('xyxtrimyyx','xy')
trim

chr(int)
text
给出ASCII码的字符
chr(65)
A

convert(string text, [src_encoding name,] dest_encoding name)
text
把字串转换为dest_encoding
convert( 'text_in_utf8', 'UTF8', 'LATIN1')
以ISO 8859-1编码表示的text_in_utf8

initcap(text)
text
把每个单词的第一个子母转为大写,其它的保留小写。单词是一系列字母数字组成的字符,用非字母数字分隔。
initcap('hi thomas')
Hi Thomas

length(string text)
int
string中字符的数目
length('jose')
4

lpad(string text, length int [, fill text])
text
通过填充字符fill(默认为空白),把string填充为长度length。 如果string已经比length长则将其截断(在右边)。
lpad('hi', 5, 'xy')
xyxhi

ltrim(string text [, characters text])
text
从字串string的开头删除只包含characters(默认是一个空白)的最长的字串。
ltrim('zzzytrim','xyz')
trim

md5(string text)
text
计算给出string的MD5散列,以十六进制返回结果。
md5('abc')

repeat(string text, number int)
text
重复string number次。
repeat('Pg', 4)
PgPgPgPg

replace(string text, from text, to text)
text
把字串string里出现地所有子字串from替换成子字串to。
replace('abcdefabcdef', 'cd', 'XX')
abXXefabXXef

rpad(string text, length int [, fill text])
text
通过填充字符fill(默认为空白),把string填充为长度length。如果string已经比length长则将其截断。
rpad('hi', 5, 'xy')
hixyx

rtrim(string text [, character text])
text
从字串string的结尾删除只包含character(默认是个空白)的最长的字
rtrim('trimxxxx','x')
trim

split_part(string text, delimiter text, field int)
text
根据delimiter分隔string返回生成的第field个子字串(1 Base)。
split_part('abc~@~def~@~ghi', '~@~', 2)
def

strpos(string, substring)
text
声明的子字串的位置。
strpos('high','ig')
2

substr(string, from [, count])
text
抽取子字串。
substr('alphabet', 3, 2)
ph

to_ascii(text [, encoding])
text
把text从其它编码转换为ASCII。
to_ascii('Karel')
Karel

to_hex(number int/bigint)
text
把number转换成其对应地十六进制表现形式。
to_hex(9223372036854775807)
7fffffffffffffff

translate(string text, from text, to text)
text
把在string中包含的任何匹配from中的字符的字符转化为对应的在to中的字符。
translate('12345', '14', 'ax')
a23x5

类型转换相关函数

函数
返回类型
描述
实例

to_char(timestamp, text)
text
将时间戳转换为字符串
to_char(current_timestamp, 'HH12:MI:SS')

to_char(interval, text)
text
将时间间隔转换为字符串
to_char(interval '15h 2m 12s', 'HH24:MI:SS')

to_char(int, text)
text
整型转换为字符串
to_char(125, '999')

to_char(double precision, text)
text
双精度转换为字符串
to_char(125.8::real, '999D9')

to_char(numeric, text)
text
数字转换为字符串
to_char(-125.8, '999D99S')

to_date(text, text)
date
字符串转换为日期
to_date('05 Dec 2000', 'DD Mon YYYY')

to_number(text, text)
numeric
转换字符串为数字
to_number('12,454.8-', '99G999D9S')

to_timestamp(text, text)
timestamp
转换为指定的时间格式 time zone convert string to time stamp
to_timestamp('05 Dec 2000', 'DD Mon YYYY')

to_timestamp(double precision)
timestamp
把UNIX纪元转换成时间戳
to_timestamp(1284352323)

参考文章:https://blog.csdn.net/sun5769675/article/details/50628979

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论