English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 |
Имя функции | Описание | Пример |
---|---|---|
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); -- 2 | LOG10(x) | Возврат логарифма по основанию 10 |
SELECT LOG10(100) -- 2 | LOG2(x) | Возврат логарифма по основанию 2 Возврат логарифма 6 по основанию 2: |
SELECT LOG2(6); -- 2.584962500721156 | MAX(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) -- 1 | PI() | Возврат числа pi (3.141593) |
SELECT PI() -- 3.141593 | POWER(x,y) | Возврат x в степени y POW(x,y) |
SELECT POW(2,3) -- 8 | POWER(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 |
Имя функции | Описание | Пример |
---|---|---|
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, тип определяет возвращаемое значение. тип может принимать значения:
| 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 |
Имя функции | Описание | Пример |
---|---|---|
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 |