Перейти к основному содержанию

Условные функции

COALESCE

Возвращает первое непустое (не null) значение из приведенных аргументов. Пример
foobarCOALESCE(foo, bar)
111
null22
3null3
null44

GREATEST

Возвращает наибольшее значение из приведенных аргументов. Пример
foobarGREATEST(foo, bar)
122
434
null55

IF

Выполняет проверку условия в первом аргументе. Возвращает значение второго аргумента, если условие истино. Возвращает значение третьего аргумента, если условие - ложь. Пример
fooIF(foo < 250, ‘yes’, ‘no’)
300'yes'
200'no'
null'no'

IFNULL

Если значение равно NULL, то возвращает второй аргумент функции. Пример
fooIFNULL(foo, 0)
100100
null0
00

LEAST

Возвращает наименьшее значение из представленных аргументов.
При сравнении любого числа с null вернется число.
Пример
foobarLEAST(foo, bar)
121
533
null55

NULLIF

Возвращает NULL, если аргументы равны, иначе возвращает первый аргумент. Пример
foobarNULLIF(foo, bar)
44null
868
null3null
7null7

Математические

ABS

Возвращает абсолютное значение аргумента. Пример
fooABS(foo)
-55
3.23.2
00

CBRT

Вычисляет кубический корень (∛) числа. Пример
fooCBRT(foo)
82
273
-1-1

CEIL

Округляет число «вверх» до ближайшего целого (к большему по модулю). Пример
fooCEIL(foo)
3.24
-1.7-1
5.05

DIV

Возвращает целочисленный результат деления (отбрасывает дробную часть).
При использовании данной функции не обязательно делать проверку на ноль знаменателя.
Пример
foobarDIV(foo, bar)
723
933
-52-2

EXP

Вычисляет экспоненту: e⁽ˣ⁾. Пример
fooEXP(foo)
12.71828
01.0
-10.36788

FLOOR

Округляет число «вниз» до ближайшего целого (к меньшему по модулю). Пример
fooFLOOR(foo)
3.83
-1.2-2
5.05

LN

Вычисляет натуральный логарифм (logₑ). Пример
fooLN(foo)
10.0
2.718281.0
102.3026

LOG

Вычисляет логарифм по заданному основанию: LOG(x, base). Пример
foobaseLOG(foo, base)
100102.0
823.0
2733.0

LOG2

Вычисляет логарифм по основанию 2 (log₂). Пример
fooLOG2(foo)
83.0
164.0
10.0

LOG10

Вычисляет десятичный логарифм (log₁₀). Пример
fooLOG10(foo)
1002.0
10003.0
10.0

LOG1P

Вычисляет ln(1 + foo), полезен для малых foo. Пример
fooLOG1P(foo)
0.00.0
0.10.09531
-0.5-0.6931

MAXIF

Сравнивает первый аргумент со вторым аргументом. Второй аргумент может содержать выражение. Возвращает наибольшее значение.
foobarMAXIF(foo, bar - 3)
374
545
null2-1

MOD

Возвращает остаток от деления foo % bar. Пример
foobarMOD(foo, bar)
731
1042
-531

PI

Возвращает приближение числа π. Пример
PI()
3.14159

POW

Возводит число в заданную степень: POW(foo, bar). Пример
foobarPOW(foo, bar)
238
5225
90.53

ROUND

Округляет число до указанного количества знаков после запятой (по умолчанию 0) «вне зависимости от знака». Пример
foodigitsROUND(foo, digits)
3.1415923.14
-2.71833-2.718
1.502

SIGN

Возвращает знак числа: −1, 0 или +1. Пример
fooSIGN(foo)
101
-3.2-1
00

SQRT

Вычисляет квадратный корень (√) числа. Пример
fooSQRT(foo)
42
2.251.5
00

Строковые

BIT_LENGTH

Возвращает длину входной строки в битах (количество символов × 8). Пример
strBIT_LENGTH(str)
'Hi'16
'Master'48
null0

CONCAT

Конкатенирует все входные выражения в одну строку. Пример
abCONCAT(a, b)
'foo''bar''foobar'
'A''B''AB'
null'x''x'

CONCAT_WS

Конкатенирует все входные выражения, вставляя между ними указанный разделитель. Пример
sepabCONCAT_WS(sep, a, b)
'-'2025052025-05
',''one''two'one, two
null'x''y'xy

DATE

Преобразует строку заданного формата в значение типа Date. Пример
strfmtDATE(str, fmt)
'2025-05-12'%Y-%m-%d2025-05-12
'12/31/2024'%m/%d/%Y2024-12-31

ENDS_WITH

Возвращает True, если значение оканчивается на указанную подстроку. Пример
strsuffixENDS_WITH(str, suffix)
'hello''lo'true
'world''ld'true
'master''te'false

INITCAP

Преобразует первую букву каждого слова в заглавную, остальные – в строчные. Пример
strINITCAP(str)
'hello world''Hello World'
'MASTER sql''Master Sql'
nullnull

LEFT

Возвращает первые (левые) n символов строки. Пример
strnLEFT(str, n)
'Master'3'Mas'
'Data'2'Da'
'Hi'5'Hi'

LENGTH

Возвращает количество символов в строке. Пример
strLENGTH(str)
'Master'6
null0
'ñá'2

LOWER

Преобразует все символы строки в нижний регистр. Пример
strLOWER(str)
'Hello''hello'
'MASTER''master'
nullnull

LTRIM

Удаляет пробельные символы слева. Пример
strLTRIM(str)
'hello''hello'
'\tworld''world'
'nochange''nochange'

NORMALIZE

Приводит строку к заданной Unicode-нормализации (NFC, NFD, NFKC, NFKD). Пример
formstrNORMALIZE(str, form)
'NFC''composed''composed'
'NFD''decomposed''decomposed'

OCTET_LENGTH

Возвращает длину строки в байтах (UTF-8). Пример
strOCTET_LENGTH(str)
'Hi'2
'ñá'4
null0

REGEXP_LIKE

Возвращает True, если регулярное выражение соответствует строке (опционально — флаги). Пример
strpatternREGEXP_LIKE(str, pattern)
apple^a.*e$true
Banana^b.*a$false
Master123\d+true

REPLACE

Заменяет все вхождения одной подстроки на другую. Пример
strfromtoREPLACE(str, from, to)
2025-05-12-/2025/05/12
bananaaobonono

REVERSE

Возвращает строку в обратном порядке. Пример
strREVERSE(str)
abccba
MasterretsaM

Возвращает последние (правые) n символов строки. Пример
strnRIGHT(str, n)
Master3ter
Hi5Hi

RTRIM

Удаляет пробельные символы справа. Пример
strRTRIM(str)
hello hello
world\tworld
nochangenochange

SPLIT_PART

Разбивает строку по разделителю и возвращает n-ю часть (n начиная с 1). Пример
strdelimnSPLIT_PART(str, delim, n)
a,b,c,2b
2025-05-12-312

STARTS_WITH

Возвращает True, если строка начинается с указанной подстроки. Пример
strprefixSTARTS_WITH(str, prefix)
hellohetrue
worldwotrue
masterMafalse

STRING_TO_ARRAY

Разбивает строку по разделителю в массив строк. Пример
strdelimSTRING_TO_ARRAY(str, delim)
aa,bb,cc','[aa, bb, cc]
one two' '[one, two]

STRPOS

Возвращает позицию (1-indexed) первого вхождения подстроки; 0, если не найдено. Пример
strsubstrSTRPOS(str, substr)
Masterte4
helloz0

STRPTIME

Преобразует строку в Datetime по формату strftime. Пример
strfmtSTRPTIME(str, fmt)
2025-05-12 14:30%Y-%m-%d %H:%M2025-05-12 14:30:00
12/31/2024 23:59%m/%d/%Y %H:%M2024-12-31 23:59:00

SUBSTR

Возвращает срез строки длины length, начиная с позиции start (1-indexed). Пример
strstartlengthSUBSTR(str, start, length)
Master23ast
abcdef410def

TIMESTAMP

Преобразует строку в Datetime по формату (как STRPTIME, но называется для семантики). Пример
strfmtTIMESTAMP(str, fmt)
2025-05-12T14:30:00%Y-%m-%dT%H:%M:%S2025-05-12 14:30:00

UPPER

Преобразует все символы строки в верхний регистр. Пример
strUPPER(str)
helloHELLO
MasterMASTER

Дата

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”
Пример
dtDATE_PART(‘year’, dt)DATE_PART(‘month’, dt)DATE_PART(‘day’, dt)
1969-12-3119691231
2026-08-222026822
2077-02-102077210

EXTRACT

Аналогично DATE_PART, но с другой синтаксической формой. Пример
dtEXTRACT(YEAR FROM dt)EXTRACT(MONTH FROM dt)EXTRACT(DAY FROM dt)
2025-01-01 08:30:00202511
2024-12-31 23:59:5920241231

NOW

Возвращает текущий timestamp Пример
now()
new Date().toLocaleDateString(‘ru-RU’)

STRFTIME

Форматирует значение Date, Time или Datetime в строку в соответствии с переданным шаблоном. Поддерживаемые форматы
СпецификаторПримерОписание
Спецификаторы дат:
%Y2001Полный пролептический григорианский год, с добавлением нуля до 4 цифр. Поддерживаются годы от -262144 до 262143. Примечание: годы до 1 г. до н.э. или после 9999 г. н.э. требуют указания начального знака (+/-).
%C20Пролептический григорианский год, деленный на 100, с добавлением нуля до 2 цифр.
%y01Пролептический григорианский год по модулю 100, дополненный нулем до 2 цифр.
%q1Квартал в рамках года (1-4)
%m07Номер месяца (01–12), с дополнением к нулю до 2 цифр.
%bJulСокращенное название месяца. Всегда 3 буквы.
%BJulyПолное название месяца. При разборе также допускается соответствующая аббревиатура.
%hJulТо же, что и %b.
%d08Номер дня (01-31), дополненный нулем до 2 цифр.
%e 8То же, что %d, но с пробелом. То же, что %_d.
%aSunСокращенное название дня недели. Всегда из 3 букв.
%ASundayПолное название дня недели. При разборе также допускается соответствующая аббревиатура.
%w0Воскресенье = 0, Понедельник = 1, …, Суббота = 6.
%u7Понедельник = 1, Вторник = 2, …, Воскресенье = 7. (ISO 8601)
%U28Номер недели, начинающийся с воскресенья (00-53), с добавлением нуля до 2 цифр.
%W27То же, что и %U, но вместо этого неделя 1 начинается с первого понедельника в этом году.
%G2001Аналогично %Y, но используется номер года в дате недели по стандарту ISO 8601.
%g01Аналогично %y, но используется номер года в дате недели по стандарту ISO 8601.
%V27Аналогично %U, но используется номер недели в стандарте ISO 8601 week date (01-53).
%j189День года (001-366), дополненный нулем до 3 цифр.
%D07/08/01Формат месяц-день-год. Такой же, как %m/%d/%y.
%x07/08/01Представление даты в языковом стандарте (например, 31.12.99).
%F2001-07-08Формат год-месяц-день (ISO 8601). Аналогично %Y-%m-%d.
%v8-Jul-2001Формат день-месяц-год. Такой же, как %e-%b-%Y.
Спецификаторы времени:
%H00Номер часа (00-23), дополненный нулем до 2 цифр.
%k0То же, что %H, но с пробелом. То же, что %_H.
%I12Номер часа в 12-часовых часах (01-12), дополненный нулем до 2 цифр.
%l12То же, что %I, но с пробелом. То же, что %_I.
%Pamam или pm по 12-часовому расписанию.
%pAMAM или PM по 12-часовому расписанию.
%M34Номер минуты (00-59), дополненный нулем до 2 цифр.
%S60Второе число (00-60), дополненное нулем до 2 цифр.
%f26490000Количество наносекунд, прошедших с последней целой секунды.
%.f.026490Десятичная доля секунды. Используется начальная точка.
%.3f.026Десятичная доля секунды с фиксированной длиной 3.
%.6f.026490Десятичная доля секунды с фиксированной длиной 6.
%.9f.026490000Десятичная доля секунды с фиксированной длиной 9.
%3f026Десятичная доля секунды, подобная %.3f, но без начальной точки.
%6f026490Десятичная доля секунды, подобная %.6f, но без начальной точки.
%9f026490000Десятичная доля секунды, подобная %.9f, но без начальной точки.
%R00:34Часовой и минутный формат. Аналогично %H:%M.
%T00:34:60Формат часов, минут и секунд. Такой же, как %H:%M:%S.
%X00:34:60Отображение времени в локали (например, 23:13:48).
%r12:34:60 AM12-часовое время на часах в регионе. (например, 11:11:04). Значение возвращается к %X, если в регионе нет 12-часового формата часов.
Спецификаторы временых зон:
%ZACSTНазвание местного часового пояса. При разборе пропускаются все символы, кроме пробелов. При форматировании совпадает с %:z.
%z+0930Смещение от местного времени к UTC (при этом UTC равно +0000).
%:z+09:30То же, что %z, но с двоеточием.
%::z+09:30:00Смещение от местного времени к UTC в секундах.
%:::z+09Смещение от местного времени к UTC без учета минут.
%#z+09Только синтаксический анализ: аналогично %z, но допускает отсутствие или присутствие минут.
Спецификаторы даты и времени:
%cSun Jul 8 00:34:60 2001Дата и время в регионе (например, Чт, 3 марта 23:05:25 2005).
%+2001-07-08T00:34:60.026490+09:30Формат даты и времени ISO 8601 / RFC 3339.
%s994518299Временная метка UNIX, количество секунд, прошедших с 00:00 UTC 1970-01-01.
Специальный спецификаторы:
%tБуквальная табуляция (\t).
%nБуквальный перевод строки (\n).
%%Буквальный знак процента.
Пример
dtSTRFTIME(dt, ‘%Y-%m-%d %H:%M’)
2025-05-12 14:30:002025-05-12 14:30
2023-11-01 09:05:452023-11-01 09:05

Тригонометрия

ACOS

Вычисляет арккосинус (обратную функцию косинуса) входного значения в радианах. Пример
xACOS(x)
1.00.00000
0.01.57080
-1.03.14159

ACOSD

Вычисляет арккосинус входного значения в градусах. Пример
xACOSD(x)
1.00
0.090
-1.0180

ASIN

Вычисляет арксинус (обратную функцию синуса) входного значения в радианах. Пример
xASIN(x)
0.00.00000
1.01.57080
-1.0-1.57080

ASIND

Вычисляет арксинус входного значения в градусах. Пример
xASIND(x)
0.00
1.090
-1.0-90

ATAN

Вычисляет арктангенс (обратную функцию тангенса) входного значения в радианах. Пример
xATAN(x)
0.00.00000
1.00.78540
-1.0-0.78540

ATAND

Вычисляет арктангенс входного значения в градусах. Пример
xATAND(x)
0.00
1.045
-1.0-45

ATAN2

Вычисляет арктангенс отношения столбцов (column_1/column_2) в радианах, учитывая квадрант по знакам обоих аргументов. Пример
yxATAN2(y, x)
1.01.00.78540
1.0-1.02.35619
-1.0-1.0-2.35619

ATAN2D

Вычисляет арктангенс отношения столбцов в градусах, учитывая квадрант. Пример
yxATAN2D(y, x)
1.01.045
1.0-1.0135
-1.0-1.0-135

COT

Вычисляет котангенс (обратную функцию тангенса) входного значения в радианах: COT(x) = COS(x)/SIN(x). Пример
xCOT(x)
π/41.00000
π/20.00000
π/61.73205

COTD

Вычисляет котангенс входного значения в градусах: COTD(x) = COSD(x)/SIND(x). Пример
xCOTD(x)
451
900
301.73205

COS

Вычисляет косинус входного значения в радианах. Пример
xCOS(x)
0.0001.00000
1.57080.00000
3.1416-1.00000

COSD

Вычисляет косинус входного значения в градусах. Пример
xCOSD(x)
01
900
180-1

DEGREES

Преобразует угол из радиан в градусы: DEGREES(x) = x * 180 / π. Пример
xDEGREES(x)
0.0000
1.570890
3.1416180

RADIANS

Преобразует угол из градусов в радианы: RADIANS(x) = x * π / 180. Пример
xRADIANS(x)
00.00000
901.57080
1803.14159

SIN

Вычисляет синус входного значения в радианах. Пример
xSIN(x)
0.0000.00000
1.57081.00000
3.14160.00000

SIND

Вычисляет синус входного значения в градусах. Пример
xSIND(x)
00
901
1800

TAN

Вычисляет тангенс входного значения в радианах. Пример
xTAN(x)
0.0000.00000
0.78541.00000
1.5708

TAND

Вычисляет тангенс входного значения в градусах. Пример
xTAND(x)
00
451
90

Типизация

CAST

Конвертирует данные в определенный тип. Пример
foobarCAST(foo AS float4)CAST(bar AS date)
201999-12-3120.01999-12-31
102012-07-0510.02012-07-05
302024-01-0130.02024-01-01

TRY_CAST

Конвертирует данные в определенный тип. Возвращает null, если попытка конвертации неуспешна. Пример
foobarTRY_CAST(foo AS uint2)TRY_CAST(bar AS date)
654321999-12-31654321999-12-31
10101N/A10101null
-333332024-01-01null2024-01-01

Оконные функции

ROW_NUMBER

Возвращает порядковый номер строки по заданным условиям. Пример
shopregionordersrow_number([‘shop’], [‘orders’], ‘ASC’)row_number([‘shop’], [‘orders’], ‘DESC’)
shop1moscow512
shop2moscow1021
shop3vladivostok1511