Реализация языка SQL в MySQL - Функции
ОГЛАВЛЕНИЕ
Страница 14 из 25
Функции
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") |
FIELD(Z,a,b,c) | Возвращает a, если Z == a, b, если Z == b и т. д. a,b,c,d строки. ПРИМЕР: FIELD("Second","First","Second","Third","Fourth") |
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 = вторник, ...). |