Общие функции 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