Общие функции PostgreSQL

Встроенные функции PostgreSQL, также называемые агрегатными функциями, используются для обработки строковых или числовых данных.

Ниже приведён список всех распространённых встроенных функций PostgreSQL:

  • Функция COUNT: используется для подсчёта количества строк в таблице базы данных.
  • Функция MAX: используется для запроса максимального значения в определённом столбце.
  • Функция MIN: используется для запроса минимального значения в конкретном столбце.
  • Функция AVG: используется для вычисления среднего значения в конкретном столбце.
  • Функция SUM: используется для вычисления суммы всех значений в числовом столбце.
  • Функция ARRAY: используется для добавления входных значений (включая null) в массив.
  • Числовые функции: полный список функций для операций, требуемых в SQL.
  • Строковые функции: полный список функций для символьных операций, требуемых в 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' || 'PostgreSQL' 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`. 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 Удаляет самую длинную строку, состоящую из символов в `characters` (по умолчанию — пробел), с начала и конца `string`. 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') `text_in_utf8`, представленный в кодировке ISO 8859-1
initcap(text) text Преобразовать первую букву каждого слова в верхний регистр, оставляя остальные в нижнем регистре. Слова — это последовательности алфавитно-цифровых символов, разделённые неалфавитно-цифровыми символами. initcap('hi thomas') Hi Thomas
length(string text) int Количество символов в `string` length('jose') 4
lpad(string text, length int [, fill text]) text Дополнить `string` до длины `length` с помощью заполняющего символа `fill` (по умолчанию — пробел). Если `string` уже длиннее `length`, обрезать её (справа). lpad('hi', 5, 'xy') xyxhi
ltrim(string text [, characters text]) text Удалить самую длинную строку, состоящую только из символов (по умолчанию — пробел), из начала `string`. ltrim('zzzytrim','xyz') trim
md5(string text) text Вычислить MD5-хеш заданной `string`, возвращая результат в шестнадцатеричном виде. md5('abc')
repeat(string text, number int) text Повторить `string` `number` раз. repeat('Pg', 4) PgPgPgPg
replace(string text, from text, to text) text Заменить все вхождения подстроки `from` в строке `string` на подстроку `to`. replace('abcdefabcdef', 'cd', 'XX') abXXefabXXef
rpad(string text, length int [, fill text]) text Дополнить `string` до длины `length` символом заполнения `fill` (по умолчанию — пробел). Если `string` уже длиннее `length`, обрезать её. rpad('hi', 5, 'xy') hixyx
rtrim(string text [, character text]) text Удалить самую длинную строку, состоящую только из символов (по умолчанию — пробел), с конца строки `string`. rtrim('trimxxxx','x') trim
split_part(string text, delimiter text, field int) text Вернуть `field`-ю подстроку, полученную при разделении `string` по `delimiter` (нумерация с 1). split_part('abc~@~def~@~ghi', '~@~', 2) def
strpos(string, substring) text Позиция указанной подстроки. strpos('high','') 2
substr(string, from [, length]) 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 Преобразовать timestamp в строку to_char(current_timestamp, 'HH12:MI:SS')
to_char(interval, text) text Преобразовать interval в строку to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(int, text) text Преобразовать целое число в строку to_char(125, '999')
to_char(double precision, text) text Преобразовать double precision в строку to_char(125.8::real, '999D9')
to_char(numeric, text) text Преобразовать numeric в строку 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 Преобразовать в указанный формат времени; часовой пояс: преобразовать строку в метку времени 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

Другие расширения