Этот пост продолжает серию статей в которых представлен Драйвер SQL Aerospike
Существует два типа функций SQL: агрегатные функции и скалярные (неагрегатные) функции. Агрегатные функции работают со многими записями и создают сводку, работают с ГРУППОЙ ПО, в то время как неагрегатные функции работают с каждой записью независимо. [1]
Это утверждение верно для большинства реляционных баз данных, которые могут хранить только простой тип в одной ячейке. Aerospike поддерживает встроенные списки и карты. Драйвер JDBC Aerospike предоставляет несколько функций, которые управляют этими типами. Поскольку списки и карты не являются скалярами, мы можем определить 3 типа функций, предоставляемых драйвером JDBC Aerospike:
- скалярные функции (которые объединяют скалярные типы в одну запись)
- функции сбора (которые управляют списками и отображениями в одной записи)
- агрегатные функции, которые управляют многими записями
длина (x), длина(x) | возвращает длину заданной строки, списка, карты |
ascii(с) | возвращает ASCII-код заданного символа |
символ (c) | возвращает символ, соответствующий заданному коду ASCII |
найдите (substr, str,]) | возвращает позицию subStr в str, начиная со смещения (то есть 1, если опущено) |
инстр (подстанция, ул) | возвращает позицию subStr в str |
отделка(ы) | обрезает строку (удаляет пробелы с обеих сторон) |
ltrim(ы) | удаляет начальные пробелы из строки |
rtrim(ы) | удаляет пробелы в конце строки |
strcmp(s1, s2) | сравнивает заданные строки |
слева (s, n) | возвращает подстроку длины n, начинающуюся с начала данной строки |
нижний(и), нижний(и) корпус(ы) | преобразует строку в нижний регистр |
верхний(и), верхний(и) корпус(ы) | преобразует строку в верхний регистр |
ул(x) | возвращает строковое представление заданного значения (например, toString() в java) |
пространство(n) | возвращает строку, содержащую n пробелов |
реверс(ы) | переворачивает заданную строку |
to_base64 (байт) | генерирует представление Base64 заданного массива байтов |
из_базы64(str) | возвращает массив байтов из заданного Base64 |
substr(ул, от, до) | возвращает подстроку заданной строки |
конкат(str1, str2,…) | объединяет заданные строки |
concat_ws (разделитель, str1, str2,…) | объединяет заданные строки с помощью разделителя |
дата ([x]) | создает java.util. Датируется либо строкой, либо эпохой. Если аргумент не указан, эта функция возвращает дату, представляющую текущее время. |
календарь ([x]) | аналогично дате([x]), но возвращает java.util. Календарь` |
сейчас() | возвращает эпоху (мс) |
год ([x]), месяц ([x]), день месяца ([x]), час ([x]), минута ([x]), секунда ([x]), миллисекунда ([x]) | возвращаемый год, месяц и т.д. соответственно. Необязательным аргументом может быть отформатированная дата или эпоха в миллисекундах. Если это не предусмотрено, используется текущее время. |
карта(ы), список(ы), массив(ы) | создайте карту, список и массив соответственно из их строкового представления |
Агрегатные функции позволяют выполнять вычисления для набора значений, чтобы возвращать одно скалярное значение. Поддерживаются следующие функции:
подсчет ()
сумма()
макс()
мин()
среднее значение()
sumsq()
– сумма квадратов значений
Distinct считается модификатором, но синтаксически выглядит как функция are и также поддерживается.
Для повышения производительности и увеличения потребления памяти агрегатные функции реализованы в Lua и выполняются на стороне сервера (в базе данных Aerospike).
Проект доступен в GitHub .
В следующей статье этой серии будет объяснено, как добавить пользовательскую функцию в драйвер.
Оригинал: “https://dev.to/alexradzin/functions-supported-by-the-aerospike-sql-driver-2l0p”