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 文字列連結 '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 ハッシュを計算し、結果を16進数で返します。 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 始まり)。 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 を対応する16進数表現に変換します。 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 付きで文字列をタイムスタンプに変換します。 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

その他の拡張