Реализация языка SQL в MySQL - Функции

ОГЛАВЛЕНИЕ

Функции

select_expression может содержать следующие функции и операторы:

+ - * / Арифметические действия.
% Остаток от деления (как в C)
| & Битовые функции (используется 48 бит).
- Смена знака числа.
( ) Скобки.
BETWEEN(A,B,C) (A >= B) AND (A <= C).
BIT_COUNT() Количество бит.
ELT(N,a,b,c,d) Возвращает a, если N == 1, b, если N == 2 и т. д. a,b,c,d строки.

ПРИМЕР:

ELT(3,"First","Second","Third","Fourth")
вернет "Third".

FIELD(Z,a,b,c) Возвращает a, если Z == a, b, если Z == b и т. д. a,b,c,d строки.

ПРИМЕР:

FIELD("Second","First","Second","Third","Fourth")
вернет "Second".

IF(A,B,C) Если A истина (!= 0 and != NULL), то вернет B, иначе вернет C.
IFNULL(A,B) Если A не null, вернет A, иначе вернет B.
ISNULL(A) Вернет 1, если A == NULL, иначе вернет 0. Эквивалент ('A == NULL').
NOT ! NOT, вернет TRUE (1) или FALSE (0).
OR, AND Вернет TRUE (1) или FALSE (0).
SIGN() Вернет -1, 0 или 1 (знак аргумента).
SUM() Сумма столбца.
= <= < >= > Вернет TRUE (1) или FALSE (0).
expr LIKE expr Вернет TRUE (1) или FALSE (0).
expr NOT LIKE expr Вернет TRUE (1) или FALSE (0).
expr REGEXP expr Проверяет строку на соответствие регулярному выражению expr.
expr NOT REGEXP expr Проверяет строку на соответствие регулярному выражению expr.

select_expression может также содержать один или большее количество следующих математических функций.

ABS() Абсолютное значение (модуль числа).
CEILING() ()
EXP() Экспонента.
FORMAT(nr,NUM) Форматирует число в формат '#,###,###.##' с NUM десятичных цифр.
LOG() Логарифм.
LOG10() Логарифм по основанию 10.
MIN(),MAX() Минимум или максимум соответственно. Должна иметь при вызове два или более аргументов, иначе рассматривается как групповая функция.
MOD() Остаток от деления (аналог %).
POW() Степень.
ROUND() Округление до ближайшего целого числа.
RAND([integer_expr]) Случайное число типа float, 0 <= x <= 1.0, используется integer_expr как значение для запуска генератора.
SQRT() Квадратный корень.

select_expression может также содержать одну или больше следующих строковых функций.

CONCAT() Объединение строк.
INTERVAL(A,a,b,c,d) Возвращает 1, если A == a, 2, если A == b... Если совпадений нет, вернет 0. A,a,b,c,d... строки.
INSERT(org,strt,len,new) Заменяет подстроку org[strt...len(gth)] на new. Первая позиция строки=1.
LCASE(A) Приводит A к нижнему регистру.
LEFT() Возвращает строку символов, отсчитывая слева.
LENGTH() Длина строки.
LOCATE(A,B) Позиция подстроки B в строке A.
LOCATE(A,B,C) Позиция подстроки B в строке A, начиная с позиции C.
LTRIM(str) Удаляет все начальные пробелы из строки str.
REPLACE(A,B,C) Заменяет все подстроки B в строке A на подстроку C.
RIGHT() Get string counting from right.
RTRIM(str) Удаляет хвостовые пробелы из строки str.
STRCMP() Возвращает 0, если строки одинаковые.
SUBSTRING(A,B,C) Возвращает подстроку из A, с позиции B до позиции C.
UCASE(A) Переводит A в верхний регистр.

И наконец несколько просто полезных функций, которые тоже можно применить в select_expression.

CURDATE() Текущая дата.
DATABASE() Имя текущей базы данных из которой выполняется выбор.
FROM_DAYS() Меняет день на DATE.
NOW() Текущее время в форматах YYYYMMDDHHMMSS или "YYYY-MM-DD HH:MM:SS". Формат зависит от того в каком контексте используется NOW(): числовом или строковом.
PASSWORD() Шифрует строку.
PERIOD_ADD(P:N) Добавить N месяцев к периоду P (в формате YYMM).
PERIOD_DIFF(A,B) Возвращает месяцы между A и B. Обратите внимание, что PERIOD_DIFF работает только с датами в форме YYMM или YYYMM.
TO_DAYS() Меняет DATE (YYMMDD) на номер дня.
UNIX_TIMESTAMP([date]) Возвращает метку времени unix, если вызвана без date (секунды, начиная с GMT 1970.01.01 00:00:00). При вызове со столбцом TIMESTAMP вернет TIMESTAMP.

date может быть также строкой DATE, DATETIME или числом в формате YYMMDD (или YYYMMDD).

USER() Возвращает логин текущего пользователя.
WEEKDAY() Возвращает день недели (0 = понедельник, 1 = вторник, ...).