PostgreSQL 常用函數(shù)

2020-04-22 18:07 更新

PostgreSQL 內(nèi)置函數(shù)也稱為聚合函數(shù),用于對字符串或數(shù)字數(shù)據(jù)執(zhí)行處理。

下面是所有通用 PostgreSQL 內(nèi)置函數(shù)的列表:

  • COUNT 函數(shù):用于計算數(shù)據(jù)庫表中的行數(shù)。
  • MAX 函數(shù):用于查詢某一特定列中最大值。
  • MIN 函數(shù):用于查詢某一特定列中最小值。
  • AVG 函數(shù):用于計算某一特定列中平均值。
  • SUM 函數(shù):用于計算數(shù)字列所有值的總和。
  • ARRAY 函數(shù):用于輸入值(包括null)添加到數(shù)組中。
  • Numeric 函數(shù):完整列出一個 SQL 中所需的操作數(shù)的函數(shù)。
  • String 函數(shù):完整列出一個 SQL 中所需的操作字符的函數(shù)。

數(shù)學函數(shù)

下面是PostgreSQL中提供的數(shù)學函數(shù)列表,需要說明的是,這些函數(shù)中有許多都存在多種形式,區(qū)別只是參數(shù)類型不同。除非特別指明,任何特定形式的函數(shù)都返回和它的參數(shù)相同的數(shù)據(jù)類型。

函數(shù)返回類型描述例子結(jié)果
abs(x)絕對值abs(-17.4)17.4
cbrt(double)立方根cbrt(27.0)3
ceil(double/numeric)不小于參數(shù)的最小的整數(shù)ceil(-42.8)-42
degrees(double)把弧度轉(zhuǎn)為角度degrees(0.5)28.6478897565412
exp(double/numeric)自然指數(shù)exp(1.0)2.71828182845905
floor(double/numeric)不大于參數(shù)的最大整數(shù)floor(-42.8)-43
ln(double/numeric)自然對數(shù)ln(2.0)0.693147180559945
log(double/numeric)10為底的對數(shù)log(100.0)2
log(b numeric,x numeric)numeric指定底數(shù)的對數(shù)log(2.0, 64.0)6.0000000000
mod(y, x)取余數(shù)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把角度轉(zhuǎn)為弧度radians(45.0)0.785398163397448
random()double0.0到1.0之間的隨機數(shù)值random()
round(double/numeric)圓整為最接近的整數(shù)round(42.4)42
round(v numeric, s int)numeric圓整為s位小數(shù)數(shù)字round(42.438,2)42.44
sign(double/numeric)參數(shù)的符號(-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小數(shù)位置的數(shù)字trunc(42.438,2)42.43

三角函數(shù)列表

函數(shù)描述
acos(x)反余弦
asin(x)反正弦
atan(x)反正切
atan2(x, y)正切 y/x 的反函數(shù)
cos(x)余弦
cot(x)余切
sin(x)正弦
tan(x)正切

字符串函數(shù)和操作符

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

函數(shù)返回類型描述例子結(jié)果
string 丨丨 stringtext字串連接'Post' 丨丨 'greSQL'PostgreSQL
bit_length(string)int字串里二進制位的個數(shù)bit_length('jose')32
char_length(string)int字串中的字符個數(shù)char_length('jose')4
convert(string using conversion_name)text使用指定的轉(zhuǎn)換名字改變編碼。convert('PostgreSQL' using iso_8859_1_to_utf8)'PostgreSQL'
lower(string)text把字串轉(zhuǎn)化為小寫lower('TOM')tom
octet_length(string)int字串中的字節(jié)數(shù)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的開頭/結(jié)尾/兩邊/ 刪除只包含characters(默認是一個空白)的最長的字串trim(both 'x' from 'xTomxx')Tom
upper(string)text把字串轉(zhuǎn)化為大寫。upper('tom')TOM
ascii(text)int參數(shù)第一個字符的ASCII碼ascii('x')120
btrim(string text [, characters text])text從string開頭和結(jié)尾刪除只包含在characters里(默認是空白)的字符的最長字串btrim('xyxtrimyyx','xy')trim
chr(int)text給出ASCII碼的字符chr(65)A
convert(string text, [src_encoding name,] dest_encoding name)text把字串轉(zhuǎn)換為dest_encodingconvert( 'text_in_utf8', 'UTF8', 'LATIN1')以ISO 8859-1編碼表示的text_in_utf8
initcap(text)text把每個單詞的第一個子母轉(zhuǎn)為大寫,其它的保留小寫。單詞是一系列字母數(shù)字組成的字符,用非字母數(shù)字分隔。initcap('hi thomas')Hi Thomas
length(string text)intstring中字符的數(shù)目length('jose')4
lpad(string text, length int [, fill text])text通過填充字符fill(默認為空白),把string填充為長度length。 如果string已經(jīng)比length長則將其截斷(在右邊)。lpad('hi', 5, 'xy')xyxhi
ltrim(string text [, characters text])text從字串string的開頭刪除只包含characters(默認是一個空白)的最長的字串。ltrim('zzzytrim','xyz')trim
md5(string text)text計算給出string的MD5散列,以十六進制返回結(jié)果。md5('abc')
repeat(string text, number int)text重復(fù)string number次。repeat('Pg', 4)PgPgPgPg
replace(string text, from text, to text)text把字串string里出現(xiàn)地所有子字串from替換成子字串to。replace('abcdefabcdef', 'cd', 'XX')abXXefabXXef
rpad(string text, length int [, fill text])text通過填充字符fill(默認為空白),把string填充為長度length。如果string已經(jīng)比length長則將其截斷。rpad('hi', 5, 'xy')hixyx
rtrim(string text [, character text])text從字串string的結(jié)尾刪除只包含character(默認是個空白)的最長的字rtrim('trimxxxx','x')trim
split_part(string text, delimiter text, field int)text根據(jù)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從其它編碼轉(zhuǎn)換為ASCII。to_ascii('Karel')Karel
to_hex(number int/bigint)text把number轉(zhuǎn)換成其對應(yīng)地十六進制表現(xiàn)形式。to_hex(9223372036854775807)7fffffffffffffff
translate(string text, from text, to text)text把在string中包含的任何匹配from中的字符的字符轉(zhuǎn)化為對應(yīng)的在to中的字符。translate('12345', '14', 'ax')a23x5

類型轉(zhuǎn)換相關(guān)函數(shù)

函數(shù)返回類型描述實例
to_char(timestamp, text)text將時間戳轉(zhuǎn)換為字符串to_char(current_timestamp, 'HH12:MI:SS')
to_char(interval, text)text將時間間隔轉(zhuǎn)換為字符串to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(int, text)text整型轉(zhuǎn)換為字符串to_char(125, '999')
to_char(double precision, text)text雙精度轉(zhuǎn)換為字符串to_char(125.8::real, '999D9')
to_char(numeric, text)text數(shù)字轉(zhuǎn)換為字符串to_char(-125.8, '999D99S')
to_date(text, text)date字符串轉(zhuǎn)換為日期to_date('05 Dec 2000', 'DD Mon YYYY')
to_number(text, text)numeric轉(zhuǎn)換字符串為數(shù)字to_number('12,454.8-', '99G999D9S')
to_timestamp(text, text)timestamp轉(zhuǎn)換為指定的時間格式 time zone convert string to time stampto_timestamp('05 Dec 2000', 'DD Mon YYYY')
to_timestamp(double precision)timestamp把UNIX紀元轉(zhuǎn)換成時間戳to_timestamp(1284352323)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號