English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Функции MySQL

MySQL имеет множество встроенных функций, в следующем приведено описание этих функций.

Странные функции MySQL

ФункцияОписаниеПример
ASCII(s)Возврат кода ASCII первого символа строки s.

Возврат кода ASCII первой буквы поля CustomerName:

SELECT ASCII(CustomerName) AS NumCodeOfFirstChar
FROM Customers;
CHAR_LENGTH(s)Возвращает количество символов строки s

Возвращает количество символов строки w3codebox

SELECT CHAR_LENGTH("w3codebox") AS LengthOfString;
CHARACTER_LENGTH(s)Возвращает количество символов строки s

Возвращает количество символов строки w3codebox

SELECT CHARACTER_LENGTH("w3codebox") AS LengthOfString;
CONCAT(s1,s2...sn)Слияние нескольких строк s1,s2 и других в одну строку

Слияние нескольких строк

SELECT CONCAT("SQL ", "w3codebox ", "Gooogle ", "Facebook") AS ConcatenatedString;
CONCAT_WS(x, s1,s2...sn)Аналогичен функции CONCAT(s1,s2,...), но между каждой строкой нужно добавить разделитель x, который может быть символом-разделителем

Слияние нескольких строк с добавлением разделителя:

SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!") AS ConcatenatedString;
FIELD(s,s1,s2...)Возвращает положение первой строки s в списке строк (s1,s2...)

Возвращает положение строки c в списке значений:

SELECT FIELD("c", "a", "b", "c", "d", "e");
FIND_IN_SET(s1,s2)Возвращает положение строки, которая соответствует s1 в строке s2

Возвращает положение строки c в заданной строке:

SELECT FIND_IN_SET("c", "a,b,c,d,e");
FORMAT(x,n)Функция может форматировать число x в формате "#,###.##", сохраняя x до n позиций после запятой, и последние цифры округлять.

Форматирование чисел в формате "#,###.##":

SELECT FORMAT(250500.5634, 2); -- Вывод 250,500.56
INSERT(s1,x,len,s2)Строка s2 заменяет строку s1 с позиции x длиной len

Заменить первые 6 символов строки, начиная с первой позиции, на w3codebox:

SELECT INSERT("google.com", 1, 6, "w3codebox");  -- вывод: oldtoolbag.com
LOCATE(s1,s)Получить начальную позицию s1 в строке s

Получить позицию b в строке abc:

SELECT LOCATE('st','myteststring');  -- 5

Вернуть позицию b в строке abc:

SELECT LOCATE('b', 'abc') -- 2
LCASE(s)Преобразовать все буквы строки s в нижний регистр

Преобразовать строку w3codebox в нижний регистр:

SELECT LCASE('w3codebox') -- w3codebox
LEFT(s,n)Вернуть первые n символов строки s

Вернуть первые два символа строки w3codebox:

SELECT LEFT('w3codebox',2) -- ru
LOWER(s)Преобразовать все буквы строки s в нижний регистр

Преобразовать строку w3codebox в нижний регистр:

SELECT LOWER('w3codebox') -- w3codebox
LPAD(s1,len,s2)Заполнить строку s1 строкой s2 в начале, чтобы длина строки достигла len

Заполнить строку xx в начале строки abc:

SELECT LPAD('abc',5,'xx') -- xxabc
LTRIM(s)Удалить пробельные символы в начале строки s

Удалить пробельные символы в начале строки w3codebox:

SELECT LTRIM("    w3codebox") AS LeftTrimmedString;-- w3codebox
MID(s,n,len)Вырезать подстроку длиной len из s, начиная с n-го символа, как SUBSTRING(s,n,len)

Из строки w3codebox вырезать 3 символа начиная с 2-го места:

SELECT MID("w3codebox", 2, 3) AS ExtractString; -- UNO
POSITION(s1 IN s)Получить начальную позицию s1 в строке s

Вернуть позицию b в строке abc:

SELECT POSITION('b' in 'abc') -- 2
REPEAT(s,n)Повторите строку s n раз

Повторите строку w3codebox три раза:

SELECT REPEAT('w3codebox',3) -- w3codeboxw3codeboxw3codebox
REPLACE(s,s1,s2)Заменить строку s2 на строку s1 в строке s

Заменить символ a в строке abc на символ x:

SELECT REPLACE('abc','a','x') -- xbc
REVERSE(s)Перевернуть порядок строк s

Перевернуть порядок строк abc:

SELECT REVERSE('abc') -- cba
RIGHT(s,n)Возвратить последние n символов строки s

Возвратить последние два символа строки w3codebox:

SELECT RIGHT('w3codebox',2) -- ob
RPAD(s1,len,s2)Добавить строку s2 в конец строки s1, чтобы длина строки стала len

Заполнить строку 'xx' до конца строки 'abc':

SELECT RPAD('abc',5,'xx') -- abcxx
RTRIM(s)Убрать пробелы в конце строки s

Убрать пробелы в конце строки w3codebox:

SELECT RTRIM("w3codebox     ") AS RightTrimmedString;   -- w3codebox
SPACE(n)Возвратить n пробелов

Возвратить 10 пробелов:

SELECT SPACE(10);
STRCMP(s1,s2)Сравнение строк s1 и s2, если s1 равен s2, возвращается 0, если s1 > s2, возвращается 1, если s1 < s2, возвращается -1

Сравнение строк:

SELECT STRCMP("w3codebox", "w3codebox");  -- 0
SUBSTR(s, start, length)Из строки s вырезать подстроку длиной length начиная с positions start

Из строки w3codebox вырезать 3 символа начиная с 2-го места:

SELECT SUBSTR("w3codebox", 2, 3) AS ExtractString; -- UNO
SUBSTRING(s, start, length)Из строки s вырезать подстроку длиной length начиная с positions start

Из строки w3codebox вырезать 3 символа начиная с 2-го места:

SELECT SUBSTRING("w3codebox", 2, 3) AS ExtractString; -- UNO
SUBSTRING_INDEX(s, delimiter, number)возвращение подстроки после n-го出现的 разделителя delimiter в строке s
если number положительное, возвращение строки слева от n-го символа
если number отрицательное, возвращение строки справа от n-го символа (считая справа)
SELECT SUBSTRING_INDEX('a*b','*',1) -- a
SELECT SUBSTRING_INDEX('a*b','*',-1) -- b
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1) -- c
TRIM(s)удаление пробелов в начале и конце строки s

удаление пробелов в начале и конце строки w3codebox:

SELECT TRIM('    w3codebox    ') AS TrimmedString;
UCASE(s)преобразование строки в верхний регистр

преобразование строки w3codebox в верхний регистр:

SELECT UCASE("w3codebox"); -- w3codebox
UPPER(s)преобразование строки в верхний регистр

преобразование строки w3codebox в верхний регистр:

SELECT UPPER("w3codebox"); -- w3codebox

числовые функции MySQL

Имя функцииОписаниеПример
ABS(x)возвращение абсолютного значения x  

возвращение абсолютного значения -1:

SELECT ABS(-1) -- возвращение 1
ACOS(x)вычисление обратного косинуса x (параметр - радианы)
SELECT ACOS(0.25);
ASIN(x)вычисление обратного синуса (параметр - радианы)
SELECT ASIN(0.25);
ATAN(x)вычисление обратного тангенса (параметр - радианы)
SELECT ATAN(2.5);
ATAN2(n, m)вычисление обратного тангенса (параметр - радианы)
SELECT ATAN2(-0.8, 2);
AVG(expression)возвращение среднего значения выражения, expression - это поле

возвращение среднего значения поля Price таблицы Products:

SELECT AVG(Price) AS AveragePrice FROM Products;
CEIL(x)возвращение наименьшего целого числа, большего или равного x 
SELECT CEIL(1.5); -- возвращение 2
CEILING(x) возвращение наименьшего целого числа, большего или равного x 
SELECT CEILING(1.5); -- возвращение 2
COS(x)Поиск координаты cosine (параметр - радианы)
SELECT COS(2);
COT(x)Поиск координаты cotangent (параметр - радианы)
SELECT COT(6);
COUNT(expression)Возврат总数 записей в запросе, параметр expression - это поле или символ *

Возврат количества записей в поле products таблицы Products:

SELECT COUNT(ProductID) AS NumberOfProducts FROM Products;
DEGREES(x)Преобразование радианов в градусы  
SELECT DEGREES(3.1415926535898) -- 180
n DIV mЦелое деление, n - dividend, m - divisor

Вычисление 10 деленного на 5:

SELECT 10 DIV 5; -- 2
EXP(x)Возврат e в степени x  

Вычисление куба числа e:

SELECT EXP(3) -- 20.085536923188
FLOOR(x)Возврат максимального целого числа, не превышающего x  

Целое число, не превышающее 1.5:

SELECT FLOOR(1.5) -- возвращает 1
GREATEST(expr1, expr2, expr3, ...)Возврат максимального значения из списка

Возврат максимального значения из списка чисел:

SELECT GREATEST(3, 12, 34, 8, 25); -- 34

Возврат максимального значения из списка строк:

SELECT GREATEST("Google", "w3codebox", "Apple"); -- w3codebox
LEAST(expr1, expr2, expr3, ...)Возврат минимального значения из списка

Возврат минимального значения из списка чисел:

SELECT LEAST(3, 12, 34, 8, 25); -- 3

Возврат минимального значения из списка строк:

SELECT LEAST("Google", "w3codebox", "Apple"); -- Apple
LNВозврат естественного логарифма числа, с основанием e.

Возврат естественного логарифма числа 2:

SELECT LN(2); -- 0.6931471805599453
LOG(x) или LOG(base, x)Возврат естественного логарифма (логарифм с основанием e), если указан параметр base, то это основание задается.  
SELECT LOG(20.085536923188) -- 3
SELECT LOG(20.085536923188) -- 3
SELECT LOG(2, 4); -- 2LOG10(x)  
Возврат логарифма по основанию 10
SELECT LOG10(100) -- 2LOG2(x)

Возврат логарифма по основанию 2

Возврат логарифма 6 по основанию 2:
SELECT LOG2(6); -- 2.584962500721156MAX(expression)

Возврат максимального значения поля expression

Возврат максимального значения поля Price из таблицы Products:
SELECT MAX(Price) AS LargestPrice FROM Products;MIN(expression)

Возврат минимального значения поля expression

Возврат минимального значения поля Price из таблицы Products:
SELECT MIN(Price) AS MinPrice FROM Products;MOD(x,y) 

Возврат остатка от деления x на y

Остаток от деления 5 на 2:
SELECT MOD(5,2) -- 1PI()  
Возврат числа pi (3.141593)
SELECT PI() -- 3.141593POWER(x,y) 

Возврат x в степени y

POW(x,y)
SELECT POW(2,3) -- 8POWER(x,y) 

Возврат x в степени y

SELECT POWER(2,3) -- 8
RADIANS(x)Конвертация угла в радианы  

Конвертация 180 градусов в радианы:

SELECT RADIANS(180) -- 3.1415926535898
RAND()Возврат случайного числа от 0 до 1  
SELECT RAND() -- 0.93099315644334
ROUND(x)Возврат ближайшего целого к x
SELECT ROUND(1.23456) -- 1
SIGN(x)Возврат знака x, x является отрицательным, 0 и положительным, соответственно возвращается -1, 0 и 1 
SELECT SIGN(-10) -- (-1)
SIN(x)Искать значение синуса (параметр в градусах)  
SELECT SIN(RADIANS(30)) -- 0.5
SQRT(x)Возврат корня x  

Корень квадратный из 25:

SELECT SQRT(25) -- 5
SUM(expression)Вернуть сумму указанного поля

Рассчитать сумму поля Quantity в таблице OrderDetails:

SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;
TAN(x)Найти тангенс (параметр в градусах)
SELECT TAN(1.75); -- -5.52037992250933
TRUNCATE(x,y)Вернуть значение числа x, сохраненное до y позиций после запятой (самая большая разница с ROUND в том, что не выполняется округление)
SELECT TRUNCATE(1.23456,3) -- 1.234

Функции даты MySQL

Имя функцииОписаниеПример
ADDDATE(d,n)Рассчитать дату, начиная с начальной даты d, добавляя n дней
SELECT ADDDATE('2017-06-15', INTERVAL 10 DAY);
->2017-06-25
ADDTIME(t,n)n является выражением времени, время t добавляется к выражению времени n

Добавить 5 секунд:

SELECT ADDTIME('2011-11-11 11:11:11',5);
->2011-11-11 11:11:16 (секунды)

Добавить 2 часа, 10 минут, 5 секунд:

SELECT ADDTIME('2020-06-15 09:34:21','2:10:5'); 
-> 2020-06-15 11:44:26
CURDATE()Вернуть текущую дату
SELECT CURDATE();
-> 2018-09-19
CURRENT_DATE()Вернуть текущую дату
SELECT CURRENT_DATE();
-> 2018-09-19
CURRENT_TIMEВернуть текущее время
SELECT CURRENT_TIME();
-> 19:59:02
CURRENT_TIMESTAMP()Возврат текущей даты и времени
SELECT CURRENT_TIMESTAMP();
-> 2018-09-19 20:57:43
CURTIME()Вернуть текущее время
SELECT CURTIME();
-> 19:59:02
DATE()Извлечь дату из выражения даты или даты и времени
SELECT DATE('2017-06-15');    
-> 2017-06-15
DATEDIFF(d1,d2)Рассчитать количество дней между датами d1->d2
SELECT DATEDIFF('2001-01-01','2001-02-02')
->-32
DATE_ADD(d, INTERVAL expr тип)Расчет даты d плюс один временной интервал
ИЗВЛЕЧИТЬ ДАТУ('2011-11-11 11:11:11',1)
->2011-11-12 11:11:11 (по умолчанию это день)
ИЗВЛЕЧИТЬ ДАТУ('2011-11-11 11:11:11', INTERVAL 5 МИНУТ)
->2011-11-11 11:16:11 ( Worth of TYPE is similar to the function listed above)
ФОРМАТ ДАТЫ(d,f)Отображение даты d по требованию выражения f
ИЗВЛЕЧИТЬ ФОРМАТ ДАТЫ('2011-11-11 11:11:11','%Y-%m-%d %r')
->2011-11-11 11:11:11 УТРЕННЯЯ ЧАСТЬ
DATE_SUB(дата, INTERVAL expr тип)Функция вычитает指定的 временной интервал из даты.

Снижение значения поля OrderDate в таблице Orders на 2 дня:

ИЗВЛЕЧИТЬ OrderId, DATE_SUB(OrderDate, INTERVAL 2 ДЕНЬ) КАК OrderPayDate
ИЗ Orders
ДЕНЬ(d)Возврат даты d как части даты
ИЗВЛЕЧИТЬ ДЕНЬ('2017-06-15');  
->15
ИМЯ ДНЯ(d)Возврат дня недели d, например, Понедельник, Вторник
ИЗВЛЕЧИТЬ ИМЯ ДНЯ('2011-11-11 11:11:11')
->Пятница
ДЕНЬ МЕСЯЦА(d)Расчет дня месяца d в текущем месяце
ИЗВЛЕЧИТЬ ДЕНЬ МЕСЯЦА('2011-11-11 11:11:11')
-> 11
ДЕНЬ НЕДЕЛИ(d)Дата d今天是星期几,1 - воскресенье, 2 - понедельник, и т.д.
ИЗВЛЕЧИТЬ ДЕНЬ НЕДЕЛИ('2011-11-11 11:11:11')
->6
ДЕНЬ ГОДА(d)Расчет дня года d в текущем году
ИЗВЛЕЧИТЬ ДЕНЬ ГОДА('2011-11-11 11:11:11')
->315
ИЗВЛЕЧИТЬ(тип ИЗ d)Получение указанного значения из даты d, тип определяет возвращаемое значение.
тип может принимать значения:
  • МИКРОСЕКУНДУ

  • SECOND

  • MINUTE

  • HOUR

  • DAY

  • WEEK

  • MONTH

  • QUARTER

  • YEAR

  • SECOND_MICROSECOND

  • MINUTE_MICROSECOND

  • MINUTE_SECOND

  • HOUR_MICROSECOND

  • HOUR_SECOND

  • HOUR_MINUTE

  • DAY_MICROSECOND

  • DAY_SECOND

  • DAY_MINUTE

  • DAY_HOUR

  • YEAR_MONTH

SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11'); 
-> 11
FROM_DAYS(n)Вычисляет дату через n дней после 0000-01-01
SELECT FROM_DAYS(1111);
-> 0003-01-16
HOUR(t)Возвращает час из t
SELECT HOUR('1:2:3')
-> 1
LAST_DAY(d)Возвращает последний день месяца для заданной даты
SELECT LAST_DAY("2017-06-20");
-> 2017-06-30
LOCALTIME();Возврат текущей даты и времени
SELECT LOCALTIME();
-> 2018-09-19 20:57:43
LOCALTIMESTAMP();Возврат текущей даты и времени
SELECT LOCALTIMESTAMP();
-> 2018-09-19 20:57:43
MAKEDATE(year, day-of-year)Возвращает дату на основе заданных параметров года year и дня года day-of-year
SELECT MAKEDATE(2017, 3);
-> 2017-01-03
MAKETIME(hour, minute, second)Комбинирует время, параметры: час, минута, секунда
SELECT MAKETIME(11, 35, 4);
-> 11:35:04
MICROSECOND(date)Возвращает количество микросекунд для даты параметра
SELECT MICROSECOND("2017-06-20 09:34:00.000023");
-> 23
MINUTE(t)Возвращает минуту из t
SELECT MINUTE('1:2:3')
-> 2
MONTHNAME(d)Возвращает имя месяца из даты, например, November
SELECT MONTHNAME('2011-11-11 11:11:11')
-> November
MONTH(d)Возврат значения месяца в дате d, от 1 до 12
SELECT MONTH('2011-11-11 11:11:11');
-> 11
NOW();Возврат текущей даты и времени
SELECT NOW();
-> 2018-09-19 20:57:43
PERIOD_ADD(period, number)Добавление периода к дате комбинации года-месяца
SELECT PERIOD_ADD(201703, 5);   
-> 201708
PERIOD_DIFF(period1, period2)Возврат разницы в месяцах между двумя периодами
SELECT PERIOD_DIFF(201710, 201703);
-> 7
QUARTER(d)Возврат того, в哪个 квартале находится дата d, возвращается 1 до 4
SELECT QUARTER('2011-11-11 11:11:11');
-> 4
SECOND(t)Возврат значения секунд в t
SELECT SECOND('1:2:3');
-> 3
SEC_TO_TIME(s)Преобразование времени в секундах s в формат часов:минут:секунд
SELECT SEC_TO_TIME(4320);
-> 01:12:00
STR_TO_DATE(string, format_mask)Преобразование строки в дату
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
-> 2017-08-10
SUBDATE(d,n)Дата d минус n дней после даты
SELECT SUBDATE('2011-11-11 11:11:11', 1);
-> 2011-11-10 11:11:11 (по умолчанию это день)
SUBTIME(t,n)Время t минус время n секунд
SELECT SUBTIME('2011-11-11 11:11:11', 5);
-> 2011-11-11 11:11:06 (сек)
SYSDATE();Возврат текущей даты и времени
SELECT SYSDATE();
-> 2018-09-19 20:57:43
TIME(expression)Экстракция временной части传入ного выражения
SELECT TIME("19:30:10");
-> 19:30:10
TIME_FORMAT(t,f)Отображение времени t по требованию выражения f
SELECT TIME_FORMAT('11:11:11','%r')
11:11:11 AM
TIME_TO_SEC(t)Преобразование времени t в секунды
SELECT TIME_TO_SEC('1:12:00')
-> 4320
TIMEDIFF(time1, time2)Вычисление временного интервала
SELECT TIMEDIFF("13:10:11", "13:10:10");
-> 00:00:01
TIMESTAMP(expression, interval)При одном параметре функция возвращает дату или дату и время; при двух параметрах параметры суммируются
SELECT TIMESTAMP("2017-07-23", "13:10:11");
-> 2017-07-23 13:10:11
TO_DAYS(d)Вычисление количества дней между датой d и 0000-01-01
SELECT TO_DAYS('0001-01-01 01:01:01')
-> 366
WEEK(d)Вычисление, какая неделя года у даты d (диапазон 0 до 53)
SELECT WEEK('2011-11-11 11:11:11')
-> 45
WEEKDAY(d)Дата d является днем недели, 0 означает понедельник, 1 означает вторник и т.д.
SELECT WEEKDAY("2017-06-15");
-> 3
WEEKOFYEAR(d)Вычисление, какая неделя года у даты d (диапазон 0 до 53)
SELECT WEEKOFYEAR('2011-11-11 11:11:11')
-> 45
YEAR(d)Возврат года
SELECT YEAR("2017-06-15");
-> 2017
YEARWEEK(date, mode)Возврат года и недели (0 до 53), в mode 0 означает воскресенье, 1 означает понедельник и т.д.
SELECT YEARWEEK("2017-06-15");
-> 201724

MySQL продвинутые функции

Имя функцииОписаниеПример
BIN(x)Возврат двоичной кодировки x

Двоичная кодировка 15:

SELECT BIN(15); -- 1111
BINARY(s)Преобразование строки s в двоичную строку
SELECT BINARY "w3codebox";
->w3codebox
CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   ...
    WHEN conditionN THEN resultN
    ELSE result
END
CASE обозначает начало функции, END обозначает конец функции. Если condition1 выполнено, возвращается result1, если condition2 выполнено, возвращается result2, если ни одно не выполнено, возвращается result, а после выполнения одного из них后面的 не выполняются.
SELECT CASE 
  WHEN 1 > 0
  THEN '1 > 0'
  WHEN 2 > 0
  THEN '2 > 0'
  ELSE '3 > 0'
  END
->1 > 0
CAST(x AS type)Преобразование данных типа

Преобразование строки даты в дату:

SELECT CAST("2017-08-29" AS DATE);
->2017-08-29
COALESCE(expr1, expr2, ...., expr_n)Возвращает первый из параметров, который не является пустым (слева направо)
SELECT COALESCE(NULL, NULL, NULL, 'oldtoolbag.com', NULL, 'google.com');
->oldtoolbag.com
CONNECTION_ID()Возвращает уникальный идентификатор подключения
SELECT CONNECTION_ID();
->4292835
CONV(x,f1,f2)Возвращает f1 в системе счисления f2
SELECT CONV(15, 10, 2);
->1111
CONVERT(s USING cs)Функция изменяет кодировку строки s на cs
SELECT CHARSET('ABC')
->utf-8    
SELECT CHARSET(CONVERT('ABC' USING gbk))
->gbk
CURRENT_USER()Вернуть текущего пользователя
SELECT CURRENT_USER();
-> guest@%
DATABASE()Возвращает текущее имя базы данных
SELECT DATABASE();   
->w3codebox
IF(expr,v1,v2)Если выражение expr выполнено, возвращается результат v1; в противном случае, возвращается результат v2.
SELECT IF(1 > 0, 'правильно', 'ошибка')    
->правильно
IFNULL(v1,v2)Если значение v1 не NULL, вернуться v1, в противном случае вернуться v2.
SELECT IFNULL(null, 'Hello Word')
->Hello Word
ISNULL(expression)Установить, является ли выражение NULL
SELECT ISNULL(NULL);
->1
LAST_INSERT_ID();Вернуть последнее созданное AUTO_INCREMENT значение
SELECT LAST_INSERT_ID();
->6
NULLIF(expr1, expr2)Сравнить два строки, если строки expr1 равны expr2, вернуться NULL, в противном случае вернуться expr1
SELECT NULLIF(25, 25);
->
SESSION_USER();Вернуть текущего пользователя
SELECT SESSION_USER();
-> guest@%
SYSTEM_USER();Вернуть текущего пользователя
SELECT SYSTEM_USER();
-> guest@%
USER();Вернуть текущего пользователя
SELECT USER();
-> guest@%
VERSION();Вернуть версию базы данных
SELECT VERSION();
-> 5.6.34