Перейти к содержимому

Справочник функций

Полный список того, что доступно в выражениях Pitlord: операторы, скалярные функции (считаются построчно и годятся в любом выражении).

Обработку выражений ведёт движок Apache DataFusion, поэтому синтаксис и поведение функций совпадают с его документацией: https://datafusion.apache.org/user-guide/sql/index.html.

Часто нужное с примерами — на странице Функции.

Арифметические

Оператор Значение Пример
+ - * / сложение, вычитание, умножение, деление grade * tonnage
% остаток от деления zc % 10

Сравнение

Оператор Значение
= равно
!=, <> не равно
< <= > >= меньше, меньше или равно, больше, больше или равно
<=>, IS NOT DISTINCT FROM равно, при этом NULL считается равным NULL
IS DISTINCT FROM не равно, при этом NULL считается равным NULL
IS NULL, IS NOT NULL проверка на пропуск значения
BETWEEN a AND b попадание в диапазон, границы включаются
IN (...), NOT IN (...) попадание в список значений
LIKE, NOT LIKE сравнение с шаблоном (% — любая последовательность, _ — один символ)
ILIKE, NOT ILIKE то же без учёта регистра

Логические: AND, OR, NOT.

Строковые

Оператор Значение Пример
~ ~* совпадение с регулярным выражением: с учётом и без учёта регистра rock ~ '^ox' — истина для 'oxide'
!~ !~* отсутствие совпадения с регулярным выражением rock !~ '^ox' — ложь для 'oxide'

Склейка строк — оператор из двух вертикальных черт:

'zone_' || zone -- 'NW' -> 'zone_NW'
rock || '_' || zone -- 'ore', 'NW' -> 'ore_NW'

Если хотя бы одно из значений NULL, результат тоже NULL — Работа с NULL.

Функция Описание
abs(x) модуль числа
signum(x) знак числа
ceil(x) округление вверх
floor(x) округление вниз
round(x[, n]) округление до целого или до n знаков
trunc(x[, n]) отбрасывание знаков после n-го
sqrt(x) квадратный корень
cbrt(x) кубический корень
power(x, n), pow возведение в степень
exp(x) экспонента
ln(x) натуральный логарифм
log10(x) десятичный логарифм
log2(x) двоичный логарифм
log(b, x), log(x) логарифм по основанию b; с одним аргументом — десятичный
factorial(x) факториал целого неотрицательного числа
gcd(x, y) наибольший общий делитель
lcm(x, y) наименьшее общее кратное
isnan(x) true, если значение — «не число» (NaN)
iszero(x) true, если значение — ноль
nanvl(x, y) x, если это не NaN, иначе y
pi() число π
random(), rand случайное число в диапазоне [0, 1)

Тригонометрия: sin cos tan cot, обратные asin acos atan atan2(y, x), гиперболические sinh cosh tanh и обратные к ним asinh acosh atanh. Углы — в радианах; перевод: radians(deg), degrees(rad).

Функция Описание
coalesce(a, b, ...) первое не-NULL значение из списка
nvl(a, b), ifnull b, если a — NULL, иначе a
nvl2(a, b, c) b, если a заполнено, иначе c
nullif(a, b) NULL, если a = b, иначе a
least(a, b, ...) наименьшее из значений
greatest(a, b, ...) наибольшее из значений

Сюда же относится конструкция case when — отдельная страница.

Функция Описание
steps_below(value, edge, step) число ступеней высотой step ниже границы edge, округление вверх
steps_above(value, edge, step) число ступеней высотой step выше границы edge, округление вверх
Функция Описание
lower(s) в нижний регистр
upper(s) в верхний регистр
initcap(s) первая буква каждого слова — заглавная
length(s), char_length, character_length длина в символах
octet_length(s) длина в байтах
bit_length(s) длина в битах
trim(s[, chars]), btrim обрезка по обоим краям
ltrim(s[, chars]) обрезка слева
rtrim(s[, chars]) обрезка справа
lpad(s, n[, pad]) дополнение слева до длины n
rpad(s, n[, pad]) дополнение справа до длины n
left(s, n) первые n символов
right(s, n) последние n символов
substr(s, n[, len]), substring подстрока с позиции n
substr_index(s, delim, n), substring_index часть строки до n-го вхождения разделителя
split_part(s, delim, n) n-я часть строки, разбитой по разделителю
concat(a, b, ...) склейка строк
concat_ws(sep, a, b, ...) склейка строк через разделитель
repeat(s, n) повтор строки n раз
reverse(s) обратный порядок символов
replace(s, old, new) замена всех вхождений подстроки
translate(s, from, to) посимвольная замена по двум наборам
overlay(s placing sub from pos [for len]) вставка подстроки на позицию
contains(s, sub) содержит ли строка подстроку (с учётом регистра)
starts_with(s, sub) начинается ли строка с подстроки
ends_with(s, sub) заканчивается ли строка подстрокой
strpos(s, sub), position, instr позиция подстроки, счёт с 1; 0 — не найдено
find_in_set(s, list) номер строки в списке, разделённом запятыми
levenshtein(a, b) расстояние Левенштейна между строками
ascii(s) код первого символа
chr(n) символ по коду
to_hex(n) целое число в шестнадцатеричную строку
uuid() случайный UUID, свой для каждой строки

Двоичные строки: encode(expr, format) и decode(expr, format) — перевод двоичных данных в текстовое представление и обратно.

Функция Описание
regexp_like(s, re[, flags]) есть ли совпадение
regexp_match(s, re[, flags]) первое совпадение
regexp_count(s, re[, start[, flags]]) число совпадений
regexp_instr(s, re[, start[, n[, flags[, subexpr]]]]) позиция совпадения
regexp_replace(s, re, replacement[, flags]) замена совпадений

Флаги: i — без учёта регистра, m — многострочный режим, s — точка совпадает с переводом строки.

Функция Описание
now(), current_timestamp текущие дата и время
current_date(), today текущая дата
current_time() текущее время
make_date(y, m, d) дата из года, месяца и дня
make_time(h, m, s) время из часов, минут и секунд
to_date(expr[, format...]) преобразование в дату
to_time(expr[, format...]) преобразование во время
to_timestamp(expr[, format...]) преобразование в отметку времени
to_timestamp_seconds/_millis/_micros/_nanos(expr) то же с заданной точностью
from_unixtime(expr[, tz]) из секунд от начала эпохи Unix в отметку времени
to_unixtime(expr[, format...]) в секунды от начала эпохи Unix
to_char(expr, format), date_format форматирование даты или времени в строку
date_part(part, expr), datepart часть даты числом (год, месяц, день, час…)
date_trunc(precision, expr), datetrunc обрезка до заданной точности
date_bin(interval, expr[, origin]) раскладка отметок времени по интервалам
to_local_time(expr) отметка времени с часовым поясом — в местное время без пояса
Функция Описание
cast(expr as тип) преобразование типа; при неудаче — ошибка
try_cast(expr as тип) то же, но при неудаче NULL

Типы: double — дробное число, bigint и integer — целое, varchar — строка, boolean — логическое.