PostgreSQL 常用函数

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 字串连接 &qpos;Post&qpos; 丨丨 &qpos;greSQL&qpos; PostgreSQL
bit_length(string) int 字串里二进制位的个数 bit_length(&qpos;jose&qpos;) 32
char_length(string) int 字串中的字符个数 char_length(&qpos;jose&qpos;) 4
convert(string using conversion_name) text 使用指定的转换名字改变编码。 convert(&qpos;PostgreSQL&qpos; using iso_8859_1_to_utf8) &qpos;PostgreSQL&qpos;
lower(string) text 把字串转化为小写 lower(&qpos;TOM&qpos;) tom
octet_length(string) int 字串中的字节数 octet_length(&qpos;jose&qpos;) 4
overlay(string placing string from int [for int]) text 替换子字串 overlay(&qpos;Txxxxas&qpos; placing &qpos;hom&qpos; from 2 for 4) Thomas
position(substring in string) int 指定的子字串的位置 position(&qpos;om&qpos; in &qpos;Thomas&qpos;) 3
substring(string [from int] [for int]) text 抽取子字串 substring(&qpos;Thomas&qpos; from 2 for 3) hom
substring(string from pattern) text 抽取匹配 POSIX 正则表达式的子字串 substring(&qpos;Thomas&qpos; from &qpos;…$&qpos;) mas
substring(string from pattern for escape) text 抽取匹配SQL正则表达式的子字串 substring(&qpos;Thomas&qpos; from &qpos;%#"o_a#"_&qpos; for &qpos;#&qpos;) oma
trim([leading丨trailing 丨 both] [characters] from string) text 从字串string的开头/结尾/两边/ 删除只包含characters(默认是一个空白)的最长的字串 trim(both &qpos;x&qpos; from &qpos;xTomxx&qpos;) Tom
upper(string) text 把字串转化为大写。 upper(&qpos;tom&qpos;) TOM
ascii(text) int 参数第一个字符的ASCII码 ascii(&qpos;x&qpos;) 120
btrim(string text [, characters text]) text 从string开头和结尾删除只包含在characters里(默认是空白)的字符的最长字串 btrim(&qpos;xyxtrimyyx&qpos;,&qpos;xy&qpos;) trim
chr(int) text 给出ASCII码的字符 chr(65) A
convert(string text, [src_encoding name,] dest_encoding name) text 把字串转换为dest_encoding convert( &qpos;text_in_utf8&qpos;, &qpos;UTF8&qpos;, &qpos;LATIN1&qpos;) 以ISO 8859-1编码表示的text_in_utf8
initcap(text) text 把每个单词的第一个子母转为大写,其它的保留小写。单词是一系列字母数字组成的字符,用非字母数字分隔。 initcap(&qpos;hi thomas&qpos;) Hi Thomas
length(string text) int string中字符的数目 length(&qpos;jose&qpos;) 4
lpad(string text, length int [, fill text]) text 通过填充字符fill(默认为空白),把string填充为长度length。 如果string已经比length长则将其截断(在右边)。 lpad(&qpos;hi&qpos;, 5, &qpos;xy&qpos;) xyxhi
ltrim(string text [, characters text]) text 从字串string的开头删除只包含characters(默认是一个空白)的最长的字串。 ltrim(&qpos;zzzytrim&qpos;,&qpos;xyz&qpos;) trim
md5(string text) text 计算给出string的MD5散列,以十六进制返回结果。 md5(&qpos;abc&qpos;)
repeat(string text, number int) text 重复string number次。 repeat(&qpos;Pg&qpos;, 4) PgPgPgPg
replace(string text, from text, to text) text 把字串string里出现地所有子字串from替换成子字串to。 replace(&qpos;abcdefabcdef&qpos;, &qpos;cd&qpos;, &qpos;XX&qpos;) abXXefabXXef
rpad(string text, length int [, fill text]) text 通过填充字符fill(默认为空白),把string填充为长度length。如果string已经比length长则将其截断。 rpad(&qpos;hi&qpos;, 5, &qpos;xy&qpos;) hixyx
rtrim(string text [, character text]) text 从字串string的结尾删除只包含character(默认是个空白)的最长的字 rtrim(&qpos;trimxxxx&qpos;,&qpos;x&qpos;) trim
split_part(string text, delimiter text, field int) text 根据delimiter分隔string返回生成的第field个子字串(1 Base)。 split_part(&qpos;abc~@~def~@~ghi&qpos;, &qpos;~@~&qpos;, 2) def
strpos(string, substring) text 声明的子字串的位置。 strpos(&qpos;high&qpos;,&qpos;ig&qpos;) 2
substr(string, from [, count]) text 抽取子字串。 substr(&qpos;alphabet&qpos;, 3, 2) ph
to_ascii(text [, encoding]) text 把text从其它编码转换为ASCII。 to_ascii(&qpos;Karel&qpos;) Karel
to_hex(number int/bigint) text 把number转换成其对应地十六进制表现形式。 to_hex(9223372036854775807) 7fffffffffffffff
translate(string text, from text, to text) text 把在string中包含的任何匹配from中的字符的字符转化为对应的在to中的字符。 translate(&qpos;12345&qpos;, &qpos;14&qpos;, &qpos;ax&qpos;) a23x5

类型转换相关函数

函数 返回类型 描述 实例
to_char(timestamp, text) text 将时间戳转换为字符串 to_char(current_timestamp, &qpos;HH12:MI:SS&qpos;)
to_char(interval, text) text 将时间间隔转换为字符串 to_char(interval &qpos;15h 2m 12s&qpos;, &qpos;HH24:MI:SS&qpos;)
to_char(int, text) text 整型转换为字符串 to_char(125, &qpos;999&qpos;)
to_char(double precision, text) text 双精度转换为字符串 to_char(125.8::real, &qpos;999D9&qpos;)
to_char(numeric, text) text 数字转换为字符串 to_char(-125.8, &qpos;999D99S&qpos;)
to_date(text, text) date 字符串转换为日期 to_date(&qpos;05 Dec 2000&qpos;, &qpos;DD Mon YYYY&qpos;)
to_number(text, text) numeric 转换字符串为数字 to_number(&qpos;12,454.8-&qpos;, &qpos;99G999D9S&qpos;)
to_timestamp(text, text) timestamp 转换为指定的时间格式 time zone convert string to time stamp to_timestamp(&qpos;05 Dec 2000&qpos;, &qpos;DD Mon YYYY&qpos;)
to_timestamp(double precision) timestamp 把UNIX纪元转换成时间戳 to_timestamp(1284352323)

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

友情链接

搜外友链  |   维家  |   风淋室 >  |   明星排行  |   建筑规范文档  |   惠州保安公司  |   环保空调  |   咒术回战




意见反馈 ||  关于我们 ||  用户协议 ||  隐私保护 ||  商务合作

Copyright © 2020-2022 中华文学苑(华文苑) 京ICP备17037819号

Email:artype@163.com      QQ:262989474

加入华文苑qq群

Android下载