Справочник функций
Полный список того, что доступно в выражениях 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 — отдельная страница.
Функции Pitlord
Заголовок раздела «Функции Pitlord»| Функция | Описание |
|---|---|
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 — логическое.