Условные функции
COALESCE
Возвращает первое непустое (не null) значение из приведенных аргументов. Пример| foo | bar | COALESCE(foo, bar) |
|---|---|---|
1 | 1 | 1 |
null | 2 | 2 |
3 | null | 3 |
null | 4 | 4 |
GREATEST
Возвращает наибольшее значение из приведенных аргументов. Пример| foo | bar | GREATEST(foo, bar) |
|---|---|---|
1 | 2 | 2 |
4 | 3 | 4 |
null | 5 | 5 |
IF
Выполняет проверку условия в первом аргументе. Возвращает значение второго аргумента, если условие истино. Возвращает значение третьего аргумента, если условие - ложь. Пример| foo | IF(foo < 250, ‘yes’, ‘no’) |
|---|---|
300 | 'yes' |
200 | 'no' |
null | 'no' |
IFNULL
Если значение равно NULL, то возвращает второй аргумент функции. Пример| foo | IFNULL(foo, 0) |
|---|---|
100 | 100 |
null | 0 |
0 | 0 |
LEAST
Возвращает наименьшее значение из представленных аргументов. Пример| foo | bar | LEAST(foo, bar) |
|---|---|---|
1 | 2 | 1 |
5 | 3 | 3 |
null | 5 | 5 |
NULLIF
Возвращает NULL, если аргументы равны, иначе возвращает первый аргумент. Пример| foo | bar | NULLIF(foo, bar) |
|---|---|---|
4 | 4 | null |
8 | 6 | 8 |
null | 3 | null |
7 | null | 7 |
Математические
ABS
Возвращает абсолютное значение аргумента. Пример| foo | ABS(foo) |
|---|---|
-5 | 5 |
3.2 | 3.2 |
0 | 0 |
CBRT
Вычисляет кубический корень (∛) числа. Пример| foo | CBRT(foo) |
|---|---|
8 | 2 |
27 | 3 |
-1 | -1 |
CEIL
Округляет число «вверх» до ближайшего целого (к большему по модулю). Пример| foo | CEIL(foo) |
|---|---|
3.2 | 4 |
-1.7 | -1 |
5.0 | 5 |
DIV
Возвращает целочисленный результат деления (отбрасывает дробную часть). Пример| foo | bar | DIV(foo, bar) |
|---|---|---|
7 | 2 | 3 |
9 | 3 | 3 |
-5 | 2 | -2 |
EXP
Вычисляет экспоненту: e⁽ˣ⁾. Пример| foo | EXP(foo) |
|---|---|
1 | 2.71828 |
0 | 1.0 |
-1 | 0.36788 |
FLOOR
Округляет число «вниз» до ближайшего целого (к меньшему по модулю). Пример| foo | FLOOR(foo) |
|---|---|
3.8 | 3 |
-1.2 | -2 |
5.0 | 5 |
LN
Вычисляет натуральный логарифм (logₑ). Пример| foo | LN(foo) |
|---|---|
1 | 0.0 |
2.71828 | 1.0 |
10 | 2.3026 |
LOG
Вычисляет логарифм по заданному основанию:LOG(x, base).
Пример
| foo | base | LOG(foo, base) |
|---|---|---|
100 | 10 | 2.0 |
8 | 2 | 3.0 |
27 | 3 | 3.0 |
LOG2
Вычисляет логарифм по основанию 2 (log₂). Пример| foo | LOG2(foo) |
|---|---|
8 | 3.0 |
16 | 4.0 |
1 | 0.0 |
LOG10
Вычисляет десятичный логарифм (log₁₀). Пример| foo | LOG10(foo) |
|---|---|
100 | 2.0 |
1000 | 3.0 |
1 | 0.0 |
LOG1P
Вычисляетln(1 + foo), полезен для малых foo.
Пример
| foo | LOG1P(foo) |
|---|---|
0.0 | 0.0 |
0.1 | 0.09531 |
-0.5 | -0.6931 |
MAXIF
Сравнивает первый аргумент со вторым аргументом. Второй аргумент может содержать выражение. Возвращает наибольшее значение.| foo | bar | MAXIF(foo, bar - 3) |
|---|---|---|
3 | 7 | 4 |
5 | 4 | 5 |
null | 2 | -1 |
MOD
Возвращает остаток от деленияfoo % bar.
Пример
| foo | bar | MOD(foo, bar) |
|---|---|---|
7 | 3 | 1 |
10 | 4 | 2 |
-5 | 3 | 1 |
PI
Возвращает приближение числа π. Пример| PI() |
|---|
3.14159 |
POW
Возводит число в заданную степень:POW(foo, bar).
Пример
| foo | bar | POW(foo, bar) |
|---|---|---|
2 | 3 | 8 |
5 | 2 | 25 |
9 | 0.5 | 3 |
ROUND
Округляет число до указанного количества знаков после запятой (по умолчанию 0) «вне зависимости от знака». Пример| foo | digits | ROUND(foo, digits) |
|---|---|---|
3.14159 | 2 | 3.14 |
-2.7183 | 3 | -2.718 |
1.5 | 0 | 2 |
SIGN
Возвращает знак числа: −1, 0 или +1. Пример| foo | SIGN(foo) |
|---|---|
10 | 1 |
-3.2 | -1 |
0 | 0 |
SQRT
Вычисляет квадратный корень (√) числа. Пример| foo | SQRT(foo) |
|---|---|
4 | 2 |
2.25 | 1.5 |
0 | 0 |
Строковые
BIT_LENGTH
Возвращает длину входной строки в битах (количество символов × 8). Пример| str | BIT_LENGTH(str) |
|---|---|
'Hi' | 16 |
'Master' | 48 |
null | 0 |
CONCAT
Конкатенирует все входные выражения в одну строку. Пример| a | b | CONCAT(a, b) |
|---|---|---|
'foo' | 'bar' | 'foobar' |
'A' | 'B' | 'AB' |
null | 'x' | 'x' |
CONCAT_WS
Конкатенирует все входные выражения, вставляя между ними указанный разделитель. Пример| sep | a | b | CONCAT_WS(sep, a, b) |
|---|---|---|---|
'-' | 2025 | 05 | 2025-05 |
',' | 'one' | 'two' | one, two |
null | 'x' | 'y' | xy |
DATE
Преобразует строку заданного формата в значение типа Date. Пример| str | fmt | DATE(str, fmt) |
|---|---|---|
'2025-05-12' | %Y-%m-%d | 2025-05-12 |
'12/31/2024' | %m/%d/%Y | 2024-12-31 |
ENDS_WITH
Возвращает True, если значение оканчивается на указанную подстроку. Пример| str | suffix | ENDS_WITH(str, suffix) |
|---|---|---|
'hello' | 'lo' | true |
'world' | 'ld' | true |
'master' | 'te' | false |
INITCAP
Преобразует первую букву каждого слова в заглавную, остальные – в строчные. Пример| str | INITCAP(str) |
|---|---|
'hello world' | 'Hello World' |
'MASTER sql' | 'Master Sql' |
null | null |
LEFT
Возвращает первые (левые) n символов строки. Пример| str | n | LEFT(str, n) |
|---|---|---|
'Master' | 3 | 'Mas' |
'Data' | 2 | 'Da' |
'Hi' | 5 | 'Hi' |
LENGTH
Возвращает количество символов в строке. Пример| str | LENGTH(str) |
|---|---|
'Master' | 6 |
null | 0 |
'ñá' | 2 |
LOWER
Преобразует все символы строки в нижний регистр. Пример| str | LOWER(str) |
|---|---|
'Hello' | 'hello' |
'MASTER' | 'master' |
null | null |
LTRIM
Удаляет пробельные символы слева. Пример| str | LTRIM(str) |
|---|---|
'hello' | 'hello' |
'\tworld' | 'world' |
'nochange' | 'nochange' |
NORMALIZE
Приводит строку к заданной Unicode-нормализации (NFC, NFD, NFKC, NFKD). Пример| form | str | NORMALIZE(str, form) |
|---|---|---|
'NFC' | 'composed' | 'composed' |
'NFD' | 'decomposed' | 'decomposed' |
OCTET_LENGTH
Возвращает длину строки в байтах (UTF-8). Пример| str | OCTET_LENGTH(str) |
|---|---|
'Hi' | 2 |
'ñá' | 4 |
null | 0 |
REGEXP_LIKE
Возвращает True, если регулярное выражение соответствует строке (опционально — флаги). Пример| str | pattern | REGEXP_LIKE(str, pattern) |
|---|---|---|
apple | ^a.*e$ | true |
Banana | ^b.*a$ | false |
Master123 | \d+ | true |
REPLACE
Заменяет все вхождения одной подстроки на другую. Пример| str | from | to | REPLACE(str, from, to) |
|---|---|---|---|
2025-05-12 | - | / | 2025/05/12 |
banana | a | o | bonono |
REVERSE
Возвращает строку в обратном порядке. Пример| str | REVERSE(str) |
|---|---|
abc | cba |
Master | retsaM |
RIGHT
Возвращает последние (правые) n символов строки. Пример| str | n | RIGHT(str, n) |
|---|---|---|
Master | 3 | ter |
Hi | 5 | Hi |
RTRIM
Удаляет пробельные символы справа. Пример| str | RTRIM(str) |
|---|---|
hello | hello |
world\t | world |
nochange | nochange |
SPLIT_PART
Разбивает строку по разделителю и возвращает n-ю часть (n начиная с 1). Пример| str | delim | n | SPLIT_PART(str, delim, n) |
|---|---|---|---|
a,b,c | , | 2 | b |
2025-05-12 | - | 3 | 12 |
STARTS_WITH
Возвращает True, если строка начинается с указанной подстроки. Пример| str | prefix | STARTS_WITH(str, prefix) |
|---|---|---|
hello | he | true |
world | wo | true |
master | Ma | false |
STRING_TO_ARRAY
Разбивает строку по разделителю в массив строк. Пример| str | delim | STRING_TO_ARRAY(str, delim) |
|---|---|---|
aa,bb,cc | ',' | [aa, bb, cc] |
one two | ' ' | [one, two] |
STRPOS
Возвращает позицию (1-indexed) первого вхождения подстроки; 0, если не найдено. Пример| str | substr | STRPOS(str, substr) |
|---|---|---|
Master | te | 4 |
hello | z | 0 |
STRPTIME
Преобразует строку в Datetime по формату strftime. Пример| str | fmt | STRPTIME(str, fmt) |
|---|---|---|
2025-05-12 14:30 | %Y-%m-%d %H:%M | 2025-05-12 14:30:00 |
12/31/2024 23:59 | %m/%d/%Y %H:%M | 2024-12-31 23:59:00 |
SUBSTR
Возвращает срез строки длины length, начиная с позиции start (1-indexed). Пример| str | start | length | SUBSTR(str, start, length) |
|---|---|---|---|
Master | 2 | 3 | ast |
abcdef | 4 | 10 | def |
TIMESTAMP
Преобразует строку в Datetime по формату (как STRPTIME, но называется для семантики). Пример| str | fmt | TIMESTAMP(str, fmt) |
|---|---|---|
2025-05-12T14:30:00 | %Y-%m-%dT%H:%M:%S | 2025-05-12 14:30:00 |
UPPER
Преобразует все символы строки в верхний регистр. Пример| str | UPPER(str) |
|---|---|
hello | HELLO |
Master | MASTER |
Дата
DATE_PART
Извлекает указанную часть даты или datetime (например, год, месяц, день и т.п.). Поддериваемые временные гранулярности:- “millennium” | “millennia”
- “century” | “centuries”
- “decade” | “decades”
- “isoyear”
- “year” | “years” | “y”
- “quarter” | “quarters”
- “month” | “months” | “mon” | “mons”
- “dayofyear” | “doy”
- “dayofweek” | “dow”
- “isoweek” | “week”
- “isodow”
- “day” | “days” | “d”
- “hour” | “hours” | “h”
- “minute” | “minutes” | “mins” | “min” | “m”
- “second” | “seconds” | “sec” | “secs” | “s”
- “millisecond” | “milliseconds” | “ms”
- “microsecond” | “microseconds” | “us”
- “nanosecond” | “nanoseconds” | “ns”
- “timezone”
- “time”
- “epoch”
| dt | DATE_PART(‘year’, dt) | DATE_PART(‘month’, dt) | DATE_PART(‘day’, dt) |
|---|---|---|---|
1969-12-31 | 1969 | 12 | 31 |
2026-08-22 | 2026 | 8 | 22 |
2077-02-10 | 2077 | 2 | 10 |
EXTRACT
АналогичноDATE_PART, но с другой синтаксической формой.
Пример
| dt | EXTRACT(YEAR FROM dt) | EXTRACT(MONTH FROM dt) | EXTRACT(DAY FROM dt) |
|---|---|---|---|
| 2025-01-01 08:30:00 | 2025 | 1 | 1 |
| 2024-12-31 23:59:59 | 2024 | 12 | 31 |
NOW
Возвращает текущий timestamp Пример| now() |
|---|
| new Date().toLocaleDateString(‘ru-RU’) |
STRFTIME
Форматирует значение Date, Time или Datetime в строку в соответствии с переданным шаблоном. Поддерживаемые форматы| Спецификатор | Пример | Описание |
|---|---|---|
| Спецификаторы дат: | ||
%Y | 2001 | Полный пролептический григорианский год, с добавлением нуля до 4 цифр. Поддерживаются годы от -262144 до 262143. Примечание: годы до 1 г. до н.э. или после 9999 г. н.э. требуют указания начального знака (+/-). |
%C | 20 | Пролептический григорианский год, деленный на 100, с добавлением нуля до 2 цифр. |
%y | 01 | Пролептический григорианский год по модулю 100, дополненный нулем до 2 цифр. |
%q | 1 | Квартал в рамках года (1-4) |
%m | 07 | Номер месяца (01–12), с дополнением к нулю до 2 цифр. |
%b | Jul | Сокращенное название месяца. Всегда 3 буквы. |
%B | July | Полное название месяца. При разборе также допускается соответствующая аббревиатура. |
%h | Jul | То же, что и %b. |
%d | 08 | Номер дня (01-31), дополненный нулем до 2 цифр. |
%e | 8 | То же, что %d, но с пробелом. То же, что %_d. |
%a | Sun | Сокращенное название дня недели. Всегда из 3 букв. |
%A | Sunday | Полное название дня недели. При разборе также допускается соответствующая аббревиатура. |
%w | 0 | Воскресенье = 0, Понедельник = 1, …, Суббота = 6. |
%u | 7 | Понедельник = 1, Вторник = 2, …, Воскресенье = 7. (ISO 8601) |
%U | 28 | Номер недели, начинающийся с воскресенья (00-53), с добавлением нуля до 2 цифр. |
%W | 27 | То же, что и %U, но вместо этого неделя 1 начинается с первого понедельника в этом году. |
%G | 2001 | Аналогично %Y, но используется номер года в дате недели по стандарту ISO 8601. |
%g | 01 | Аналогично %y, но используется номер года в дате недели по стандарту ISO 8601. |
%V | 27 | Аналогично %U, но используется номер недели в стандарте ISO 8601 week date (01-53). |
%j | 189 | День года (001-366), дополненный нулем до 3 цифр. |
%D | 07/08/01 | Формат месяц-день-год. Такой же, как %m/%d/%y. |
%x | 07/08/01 | Представление даты в языковом стандарте (например, 31.12.99). |
%F | 2001-07-08 | Формат год-месяц-день (ISO 8601). Аналогично %Y-%m-%d. |
%v | 8-Jul-2001 | Формат день-месяц-год. Такой же, как %e-%b-%Y. |
| Спецификаторы времени: | ||
%H | 00 | Номер часа (00-23), дополненный нулем до 2 цифр. |
%k | 0 | То же, что %H, но с пробелом. То же, что %_H. |
%I | 12 | Номер часа в 12-часовых часах (01-12), дополненный нулем до 2 цифр. |
%l | 12 | То же, что %I, но с пробелом. То же, что %_I. |
%P | am | am или pm по 12-часовому расписанию. |
%p | AM | AM или PM по 12-часовому расписанию. |
%M | 34 | Номер минуты (00-59), дополненный нулем до 2 цифр. |
%S | 60 | Второе число (00-60), дополненное нулем до 2 цифр. |
%f | 26490000 | Количество наносекунд, прошедших с последней целой секунды. |
%.f | .026490 | Десятичная доля секунды. Используется начальная точка. |
%.3f | .026 | Десятичная доля секунды с фиксированной длиной 3. |
%.6f | .026490 | Десятичная доля секунды с фиксированной длиной 6. |
%.9f | .026490000 | Десятичная доля секунды с фиксированной длиной 9. |
%3f | 026 | Десятичная доля секунды, подобная %.3f, но без начальной точки. |
%6f | 026490 | Десятичная доля секунды, подобная %.6f, но без начальной точки. |
%9f | 026490000 | Десятичная доля секунды, подобная %.9f, но без начальной точки. |
%R | 00:34 | Часовой и минутный формат. Аналогично %H:%M. |
%T | 00:34:60 | Формат часов, минут и секунд. Такой же, как %H:%M:%S. |
%X | 00:34:60 | Отображение времени в локали (например, 23:13:48). |
%r | 12:34:60 AM | 12-часовое время на часах в регионе. (например, 11:11:04). Значение возвращается к %X, если в регионе нет 12-часового формата часов. |
| Спецификаторы временых зон: | ||
%Z | ACST | Название местного часового пояса. При разборе пропускаются все символы, кроме пробелов. При форматировании совпадает с %:z. |
%z | +0930 | Смещение от местного времени к UTC (при этом UTC равно +0000). |
%:z | +09:30 | То же, что %z, но с двоеточием. |
%::z | +09:30:00 | Смещение от местного времени к UTC в секундах. |
%:::z | +09 | Смещение от местного времени к UTC без учета минут. |
%#z | +09 | Только синтаксический анализ: аналогично %z, но допускает отсутствие или присутствие минут. |
| Спецификаторы даты и времени: | ||
%c | Sun Jul 8 00:34:60 2001 | Дата и время в регионе (например, Чт, 3 марта 23:05:25 2005). |
%+ | 2001-07-08T00:34:60.026490+09:30 | Формат даты и времени ISO 8601 / RFC 3339. |
%s | 994518299 | Временная метка UNIX, количество секунд, прошедших с 00:00 UTC 1970-01-01. |
| Специальный спецификаторы: | ||
%t | Буквальная табуляция (\t). | |
%n | Буквальный перевод строки (\n). | |
%% | Буквальный знак процента. |
| dt | STRFTIME(dt, ‘%Y-%m-%d %H:%M’) |
|---|---|
| 2025-05-12 14:30:00 | 2025-05-12 14:30 |
| 2023-11-01 09:05:45 | 2023-11-01 09:05 |
Тригонометрия
ACOS
Вычисляет арккосинус (обратную функцию косинуса) входного значения в радианах. Пример| x | ACOS(x) |
|---|---|
1.0 | 0.00000 |
0.0 | 1.57080 |
-1.0 | 3.14159 |
ACOSD
Вычисляет арккосинус входного значения в градусах. Пример| x | ACOSD(x) |
|---|---|
1.0 | 0 |
0.0 | 90 |
-1.0 | 180 |
ASIN
Вычисляет арксинус (обратную функцию синуса) входного значения в радианах. Пример| x | ASIN(x) |
|---|---|
0.0 | 0.00000 |
1.0 | 1.57080 |
-1.0 | -1.57080 |
ASIND
Вычисляет арксинус входного значения в градусах. Пример| x | ASIND(x) |
|---|---|
0.0 | 0 |
1.0 | 90 |
-1.0 | -90 |
ATAN
Вычисляет арктангенс (обратную функцию тангенса) входного значения в радианах. Пример| x | ATAN(x) |
|---|---|
0.0 | 0.00000 |
1.0 | 0.78540 |
-1.0 | -0.78540 |
ATAND
Вычисляет арктангенс входного значения в градусах. Пример| x | ATAND(x) |
|---|---|
0.0 | 0 |
1.0 | 45 |
-1.0 | -45 |
ATAN2
Вычисляет арктангенс отношения столбцов (column_1/column_2) в радианах, учитывая квадрант по знакам обоих аргументов.
Пример
| y | x | ATAN2(y, x) |
|---|---|---|
1.0 | 1.0 | 0.78540 |
1.0 | -1.0 | 2.35619 |
-1.0 | -1.0 | -2.35619 |
ATAN2D
Вычисляет арктангенс отношения столбцов в градусах, учитывая квадрант. Пример| y | x | ATAN2D(y, x) |
|---|---|---|
1.0 | 1.0 | 45 |
1.0 | -1.0 | 135 |
-1.0 | -1.0 | -135 |
COT
Вычисляет котангенс (обратную функцию тангенса) входного значения в радианах:COT(x) = COS(x)/SIN(x).
Пример
| x | COT(x) |
|---|---|
π/4 | 1.00000 |
π/2 | 0.00000 |
π/6 | 1.73205 |
COTD
Вычисляет котангенс входного значения в градусах:COTD(x) = COSD(x)/SIND(x).
Пример
| x | COTD(x) |
|---|---|
45 | 1 |
90 | 0 |
30 | 1.73205 |
COS
Вычисляет косинус входного значения в радианах. Пример| x | COS(x) |
|---|---|
0.000 | 1.00000 |
1.5708 | 0.00000 |
3.1416 | -1.00000 |
COSD
Вычисляет косинус входного значения в градусах. Пример| x | COSD(x) |
|---|---|
0 | 1 |
90 | 0 |
180 | -1 |
DEGREES
Преобразует угол из радиан в градусы:DEGREES(x) = x * 180 / π.
Пример
| x | DEGREES(x) |
|---|---|
0.000 | 0 |
1.5708 | 90 |
3.1416 | 180 |
RADIANS
Преобразует угол из градусов в радианы:RADIANS(x) = x * π / 180.
Пример
| x | RADIANS(x) |
|---|---|
0 | 0.00000 |
90 | 1.57080 |
180 | 3.14159 |
SIN
Вычисляет синус входного значения в радианах. Пример| x | SIN(x) |
|---|---|
0.000 | 0.00000 |
1.5708 | 1.00000 |
3.1416 | 0.00000 |
SIND
Вычисляет синус входного значения в градусах. Пример| x | SIND(x) |
|---|---|
0 | 0 |
90 | 1 |
180 | 0 |
TAN
Вычисляет тангенс входного значения в радианах. Пример| x | TAN(x) |
|---|---|
0.000 | 0.00000 |
0.7854 | 1.00000 |
1.5708 | ∞ |
TAND
Вычисляет тангенс входного значения в градусах. Пример| x | TAND(x) |
|---|---|
0 | 0 |
45 | 1 |
90 | ∞ |
Типизация
CAST
Конвертирует данные в определенный тип. Пример| foo | bar | CAST(foo AS float4) | CAST(bar AS date) |
|---|---|---|---|
20 | 1999-12-31 | 20.0 | 1999-12-31 |
10 | 2012-07-05 | 10.0 | 2012-07-05 |
30 | 2024-01-01 | 30.0 | 2024-01-01 |
TRY_CAST
Конвертирует данные в определенный тип. Возвращает null, если попытка конвертации неуспешна. Пример| foo | bar | TRY_CAST(foo AS uint2) | TRY_CAST(bar AS date) |
|---|---|---|---|
65432 | 1999-12-31 | 65432 | 1999-12-31 |
10101 | N/A | 10101 | null |
-33333 | 2024-01-01 | null | 2024-01-01 |
Оконные функции
ROW_NUMBER
Возвращает порядковый номер строки по заданным условиям. Пример| shop | region | orders | row_number([‘shop’], [‘orders’], ‘ASC’) | row_number([‘shop’], [‘orders’], ‘DESC’) |
|---|---|---|---|---|
shop1 | moscow | 5 | 1 | 2 |
shop2 | moscow | 10 | 2 | 1 |
shop3 | vladivostok | 15 | 1 | 1 |