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

Funções MySQL

MySQL possui muitas funções integradas. A seguir está uma descrição dessas funções.

Funções de string do MySQL

FunçãoDescriçãoExemplo
ASCII(s)Retorna o código ASCII do primeiro caractere da string s.

Retorna o código ASCII da primeira letra do campo CustomerName:

SELECT  ASCII(CustomerName)  como  NumCodeOfFirstChar
FROM  Customers;
CHAR_LENGTH(s)Retorna o número de caracteres da string s

Retorna a string w3Número de caracteres do codebox

SELECT  CHAR_LENGTH(\3codebox)  como  LengthOfString;
CHARACTER_LENGTH(s)Retorna o número de caracteres da string s

Retorna a string w3Número de caracteres do codebox

SELECT  CHARACTER_LENGTH(\3codebox)  como  LengthOfString;
CONCAT(s1,s2...sn)字符串 s1,s2 Muitas strings combinadas em uma string

Combinação de várias strings

SELECT  CONCAT(\3codebox ", \
CONCAT_WS(x, s1,s2...sn)CONCAT(s1,s2Função, mas cada string deve ser separada por x, que pode ser um delimitador

合并多个字符串,并添加分隔符:

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)返回在字符串s2中与s1匹配的字符串的位置

返回字符串 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)IN s)1 Obter s

获取 b 在字符串 abc 中的位置:

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

início da string

SELECT LOCATE('b', 'abc') -- 2
LCASE(s)将字符串 s 的所有字母变成小写字母

字符串 w3codebox 转换为小写:

SELECT LCASE('w3codebox') -- w3codebox
LEFT(s,n)返回字符串 s 的前 n 个字符

Retorna a string w3codebox 中的前两个字符:

SELECT LEFT('w3codebox',2) -- ru
LOWER(s)将字符串 s 的所有字母变成小写字母

字符串 w3codebox 转换为小写:

SELECT LOWER('w3codebox') -- w3codebox
LPAD(s1,len,s2)na string s1 的开始处填充字符串 s2,使字符串长度达到 len

将字符串 xx 填充到 abc 字符串的开始处:

SELECT LPAD('abc',5,'xx') -- xxabc
LTRIM(s)去掉字符串 s 开始处的空格

Remover os espaços em branco no início e no final da string w3codebox开始处的空格:

SELECT LTRIM("  w3codebox") AS LeftTrimmedString;-- w3codebox
codebox") AS LeftTrimmedString;MID(s,n,len)

da string w3codebox na posição 2 posição(s) de corte 3caractere(s):

Extrair uma substringa de comprimento len a partir da posição n da string s, equivalente a SUBSTRING(s,n,len)3codebox", 2, 3) AS ExtractString; -- UNO
SELECT MID("w1 POSITION(sIN s)1 Obter s

início da string

Retorna a posição de b na string abc: -- 2
SELECT POSITION('b' in 'abc')REPEAT(s,n)

Converter a string w3Repetir a string s n vezes

codebox três vezes:3codebox',3) -- w3SELECT REPEAT('w3SELECT REPEAT('w3codebox
codeboxw1,s2)REPLACE(s,s2 Substituir a string s1

Substituir o caractere a pela letra x na string abc:

SELECT REPLACE('abc','a','x') --xbc
REVERSE(s)Inverter a ordem da string s

Inverter a ordem da string abc:

SELECT REVERSE('abc') -- cba
RIGHT(s,n)Retorna os últimos n caracteres da string s

Retorna a string w3codebox últimos dois caracteres:

SELECT RIGHT('w3codebox',2) -- ob
RPAD(s1,len,s2)na string s1 Adicionar a string s2para que o comprimento da string atinja len

Preencher a string xx até o final da string abc:

SELECT RPAD('abc',5,'xx') -- abcxx
RTRIM(s)Remover os espaços no final da string s

Remover os espaços em branco no início e no final da string w3codebox ao final:

SELECT RTRIM("w3codebox     ") AS RightTrimmedString;   -- w3codebox
SPACE(n)Retorna n espaços

Retorna 10 Quantidade de espaços:

SELECT SPACE(10);
STRCMP(s1,s2)Comparar strings s1 e s2,se s1 com s2 retorna 0, se s1>s2 Retorna 1,se s1<s2 Retorna -1

Comparar strings:

SELECT STRCMP("w3codebox", "w3codebox");  -- 0
SUBSTR(s, start, length)Extrair uma substringa de comprimento length a partir da posição start da string s

da string w3codebox na posição 2 posição(s) de corte 3caractere(s):

SELECT SUBSTR("w3codebox", 2, 3) AS ExtractString; -- UNO
SUBSTRING(s, start, length)Extrair uma substringa de comprimento length a partir da posição start da string s

da string w3codebox na posição 2 posição(s) de corte 3caractere(s):

SELECT SUBSTRING("w3codebox", 2, 3) AS ExtractString; -- UNO
SUBSTRING_INDEX(s, delimiter, number)Retorna a substring a partir da aparição number-ésima do delimitador delimiter na string s.
Se number for positivo, retorna a string à esquerda do caractere number.
Se number for negativo, retorna a string à direita do caractere (number de absoluta, contando da direita para a esquerda).
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)Remover os espaços em branco no início e no final da string s

Remover os espaços em branco no início e no final da string w3codebox com espaços em branco no início e no final:

SELECT TRIM('                       w3codebox                       ') AS TrimmedString;
UCASE(s)Converter a string para maiúsculas

Converter a string w3codebox convertida para maiúsculas:

SELECT UCASE("w3codebox"); -- w3codebox
UPPER(s)Converter a string para maiúsculas

Converter a string w3codebox convertida para maiúsculas:

SELECT UPPER("w3codebox"); -- w3codebox

Funções numéricas do MySQL

Nome da funçãoDescriçãoExemplo
ABS(x)Retorna o valor absoluto de x  

Retorna -1 do valor absoluto:

SELECT ABS(-1) -- Retorna1
ACOS(x)Calcular o valor do arco cosseno inverso de x (parâmetro é radiano)
SELECT ACOS(0.25);
ASIN(x)Calcular o valor do arco seno (parâmetro é radiano)
SELECT ASIN(0.25);
ATAN(x)Calcular o valor do arco cosseno (parâmetro é radiano)
SELECT ATAN(2.5);
ATAN2(n, m)Calcular o valor do arco cosseno (parâmetro é radiano)
SELECT ATAN2(-0.8, 2);
AVG(expression)Retorna a média de uma expressão, expression é um campo

Retorna a média do campo Price na tabela Products:

SELECT AVG(Price) AS AveragePrice FROM Products;
CEIL(x)Retorna o menor inteiro maior ou igual a x 
SELECT CEIL(1.5) -- Retorna2
CEILING(x) Retorna o menor inteiro maior ou igual a x 
SELECT CEILING(1.5); -- Retorna2
COS(x)Calcular o valor do cosseno (parâmetro é radiano)
SELECT COS(2);
COT(x)calcula o cotangente (parâmetro em radianos)
SELECT COT(6);
COUNT(expression)Retorna o número total de registros da consulta, o parâmetro expression é um campo ou * número

Retorna o número total de registros do campo products na tabela Products:

SELECT COUNT(ProductID) AS NumberOfProducts FROM Products;
DEGREES(x)converte radianos para graus  
SELECT DEGREES(3.1415926535898) -- 180
n DIV mdivisão inteira, n é o dividendo, m é o divisor

Calcula 10 dividido por 5:

SELECT 10 DIV 5;  -- 2
EXP(x)Retorna o e elevado à x  

Calcula o cubo de e:

SELECT EXP(3) -- 20.085536923188
FLOOR(x)Retorna o maior inteiro menor ou igual a x  

menor ou igual a 1.5 do inteiro:

SELECT FLOOR(1.5) -- Retorna1
GREATEST(expr1, expr2, expr3, ...)Retorna o maior valor da lista

Retorna o maior valor da lista de números a seguir:

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

Retorna o maior valor da lista de strings a seguir:

SELECT GREATEST("Google", "w3codebox", "Apple");   -- w3codebox
LEAST(expr1, expr2, expr3, ...)Retorna o menor valor da lista

Retorna o menor valor da lista de números a seguir:

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

Retorna o menor valor da lista de strings a seguir:

SELECT LEAST("Google", "w3codebox", "Apple");   -- Apple
LNRetorna o logaritmo natural do número, com base e.

Retorna 2 do logaritmo natural:

SELECT LN(2);  -- 0.6931471805599453
LOG(x) ou LOG(base, x)Retorna o logaritmo natural (logaritmo com base e), se fornecido o parâmetro base, então base é o número especificado com base.  
SELECT LOG(20.085536923188) -- 3
SELECT LOG(2, 4); -- 2
LOG10(x)Retorna o logaritmo com base 10 do logaritmo com base  
SELECT LOG10(100) -- 2
LOG2(x)Retorna o logaritmo com base 2 do logaritmo com base

Retorna o logaritmo com base 2 com base 6 do logaritmo:

SELECT LOG2(6);  -- 2.584962500721156
MAX(expression)Retorna o valor máximo do campo expression

Retorna o valor máximo do campo Price na tabela de dados Products:

SELECT MAX(Price) AS LargestPrice FROM Products;
MIN(expression)Retorna o valor mínimo do campo expression

Retorna o valor mínimo do campo Price na tabela de dados Products:

SELECT MIN(Price) AS MinPrice FROM Products;
MOD(x,y)retorna o resto da divisão de x por y 

5 dividido por 2 o resto:

SELECT MOD(5,2) -- 1
PI()retorna o número pi (π)3.141593)  
SELECT PI() --3.141593
POW(x,y)retorna x elevado à y potência 

2 de 3 potência:

SELECT POW(2,3) -- 8
POWER(x,y)retorna x elevado à y potência 

2 de 3 potência:

SELECT POWER(2,3) -- 8
RADIANS(x)converter ângulos para radianos  

180 graus convertidos para radianos:

SELECT RADIANS(180) -- 3.1415926535898
RAND()retorna um número aleatório entre 1 um número aleatório  
SELECT RAND() --0.93099315644334
ROUND(x)retorna o inteiro mais próximo de x
SELECT ROUND(1.23456) --1
SIGN(x)retorna o sinal de x, x é negativo, 0, positivo respectivamente -1e 0 e 1 
SELECT SIGN(-10) -- (-1)
SIN(x)calcular o valor seno (o parâmetro é radiano)  
SELECT SIN(RADIANS(30)) -- 0.5
SQRT(x)retorna a raiz quadrada de x  

25 a raiz quadrada:

SELECT SQRT(25) -- 5
SUM(expressão)retorna a soma do campo especificado

calcular a soma do campo Quantity na tabela OrderDetails:

SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;
TAN(x)calcular o valor tangente (o parâmetro é radiano)
SELECT TAN(1.75);  -- -5.52037992250933
TRUNCATE(x,y)retorna o valor numérico x arredondado para y casas decimais (a maior diferença com ROUND é que não faz arredondamento)
SELECT TRUNCATE(1.23456,3) -- 1.234

funções de data do MySQL

Nome da funçãoDescriçãoExemplo
ADDDATE(d,n)calcular a data de início d adicionada n dias
SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
->2017-06-25
ADDTIME(t,n)n é uma expressão de tempo, a expressão de tempo t adicionada à expressão de tempo n

adicionar 5 segundos:

SELECT ADDTIME('2011-11-11 11:11:11', 5);
->2011-11-11 11:11:16 (秒)

adicionar 2 horas, 10 minutos, 5 segundos:

SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5); 
-> 2020-06-15 11:44:26
CURDATE()retorna a data atual
SELECT CURDATE();
-> 2018-09-19
CURRENT_DATE()retorna a data atual
SELECT CURRENT_DATE();
-> 2018-09-19
CURRENT_TIMERetorna a hora atual
SELECT CURRENT_TIME();
-> 19:59:02
CURRENT_TIMESTAMP()返回当前日期和时间
SELECT CURRENT_TIMESTAMP();
-> 2018-09-19 20:57:43
CURTIME()Retorna a hora atual
SELECT CURTIME();
-> 19:59:02
DATE()Extrair o valor da data de uma expressão de data ou data e hora
SELECT DATE('2017-06-15);    
-> 2017-06-15
DATEDIFF(d1,d2)Calcular a data d1->d2 entre os dias
SELECT DATEDIFF('2001-01-01','2001-02-02")
-> -32
DATE_ADD(d, INTERVAL expr type)Calcular a data de início d mais um período de tempo
SELECT ADDDATE('2011-11-11 11:11:11',1)
-> 2011-11-12 11:11:11    (默认是天)
SELECT ADDDATE('2011-11-11 11:11:11', INTERVAL 5 MINUTO)
-> 2011-11-11 11:16:11 (Os valores do TYPE são semelhantes aos da função listada acima)
DATE_FORMAT(d,f)Exibir a data d conforme a expressão f
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
-> 2011-11-11 11:11:11 AM
DATE_SUB(date,INTERVAL expr type)A função subtrai o intervalo de tempo especificado da data.

O campo OrderDate da tabela Orders subtraído 2 dias:

SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate
FROM Orders
DAY(d)Retorna a parte da data da data d
SELECT DAY('2017-06-15);  
-> 15
DAYNAME(d)Retorna qual dia da semana é a data d, como Monday,Tuesday
SELECT DAYNAME('2011-11-11 11:11:11")
->Friday
DAYOFMONTH(d)Calcular o dia do mês da data d
SELECT DAYOFMONTH('2011-11-11 11:11:11")
->11
DAYOFWEEK(d)A data d é qual dia da semana hoje,1 Domingo,2 Segunda-feira, em seguida,
SELECT DAYOFWEEK('2011-11-11 11:11:11")
->6
DAYOFYEAR(d)Calcular o dia do ano da data d
SELECT DAYOFYEAR('2011-11-11 11:11:11")
->315
EXTRACT(type FROM d)Obter o valor especificado da data d, o tipo especifica o valor retornado.
O tipo pode ser:
  • MICROSEGUNDO

  • SEGUNDO

  • MINUTO

  • HORA

  • DIA

  • SEMANA

  • MÊS

  • TRIMESTRE

  • ANO

  • SEGUNDO_MICROSEGUNDO

  • 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)calcular a data a partir de 0000 ano 1 月 1 data começa n dias após
SELECT FROM_DAYS(1111)
-> 0003-01-16
HOUR(t)retorna o valor da hora em t
SELECT HOUR('1:2:3")
-> 1
LAST_DAY(d)retorna o último dia do mês para a data fornecida
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(ano, dia-de-year)com base no ano fornecido como parâmetro year e no número de ordem do dia do ano-de-ano retorna uma data
SELECT MAKEDATE(2017, 3);
-> 2017-01-03
MAKETIME(hora, minuto, segundo)composição de tempo, os parâmetros são hora, minuto, segundo
SELECT MAKETIME(11, 35, 4);
-> 11:35:04
MICROSECOND(data)retorna o número de microsegundos correspondente ao parâmetro de data
SELECT MICROSECOND("2017-06-20 09:34:00.000023);
-> 23
MINUTE(t)retorna o valor do minuto em t
SELECT MINUTE('1:2:3")
-> 2
MONTHNAME(d)retorna o nome do mês da data, como Novembro
SELECT MONTHNAME('2011-11-11 11:11:11")
-> Novembro
MONTH(d)retorna o valor do mês da data d,1 até 12
SELECT MONTH('2011-11-11 11:11:11")
->11
NOW()返回当前日期和时间
SELECT NOW()
-> 2018-09-19 20:57:43
PERIOD_ADD(período, número)para ano-composição de mês de data adiciona um período
SELECT PERIOD_ADD(201703, 5);   
-> 201708
PERIOD_DIFF(período1, período2)retorna a diferença de meses entre dois períodos
SELECT PERIOD_DIFF(201710, 201703);
-> 7
QUARTER(d)a data d pertence a qual estação do ano, retorna 1 até 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)按表达式 f 的要求显示时间 t
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)单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和
SELECT TIMESTAMP("2017-07-23",  "13:10:11);
-> 2017-07-23 13:10:11
TO_DAYS(d)计算日期 d 距离 0000 年 1 月 1 日的天数
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 表示星期天,1representa segunda-feira, por exemplo.
SELECT YEARWEEK("2017-06-15);
-> 201724

Funções Avançadas do MySQL

Nome da funçãoDescriçãoExemplo
BIN(x)retorna o código binário de x

15 de 2 código de bases:

SELECT BIN(15); -- 1111
BINARY(s)Converte a string s em uma string binária
SELECT BINARY "w3codebox";
-> w3codebox
CASE expressão
    QUANDO condition1 ENTÃO result1
    QUANDO condition2 ENTÃO result2
   ...
    QUANDO conditionN ENTÃO resultN
    ELSE result
FIM
CASE indica o início da função, END indica o fim da função. Se condition1 verdadeira, então retorne result1, se condition2 verdadeira, então retorne result2Se todas não forem verdadeiras, retorne result, e se uma for verdadeira, as seguintes não serão executadas.
SELECT CASE 
  QUANDO 1 > 0
  ENTÃO '1 > 0'
  QUANDO 2 > 0
  ENTÃO '2 > 0'
  ELSE '3 > 0'
  FIM
->1 > 0
CAST(x AS type)Conversão de tipo de dados

Conversão de data de string para data:

SELECT CAST("2017-08-29" AS DATE);
-> 2017-08-29
COALESCE(expr1, expr2, ..., expr_n)retorna a primeira expressão não nula dos parâmetros (da esquerda para a direita)
SELECT COALESCE(NULL, NULL, NULL, 'oldtoolbag.com, NULL, 'google.com');
-> oldtoolbag.com
CONNECTION_ID()Retorna um ID de conexão único
SELECT CONNECTION_ID();
-> 4292835
CONV(x,f1,f2)retorna f1 o número decimal para f2 número decimal
SELECT CONV(15, 10, 2);
-> 1111
CONVERT(s USING cs)A função converte o conjunto de caracteres da string s para cs
SELECT CHARSET('ABC')
-> utf-8    
SELECT CHARSET(CONVERT('ABC' USING gbk))
-> gbk
CURRENT_USER()Retorna o usuário atual
SELECT CURRENT_USER();
-> guest@%
DATABASE()Retorna o nome do banco de dados atual
SELECT DATABASE();   
-> w3codebox
IF(expr,v1,v2)Se a expressão expr for verdadeira, retorne o resultado v1;caso contrário, retorne o resultado v2.
SELECT IF(1 0, 'correto', 'errado')    
->Correto
IFNULL(v1,v2)Se v1 Se o valor de v não for NULL, retorna v1,caso contrário retorna v2.
SELECT IFNULL(null,'Hello Word')
->Hello Word
ISNULL(expression)Determina se a expressão é NULL
SELECT ISNULL(NULL);
->1
LAST_INSERT_ID();Retorna o valor AUTO_INCREMENT mais recente gerado
SELECT LAST_INSERT_ID();
->6
NULLIF(expr1, expr2)Comparar duas strings, se a string expr1 com expr2 Retorna NULL se igual, caso contrário retorna expr1
SELECT NULLIF(25, 25);
->
SESSION_USER();Retorna o usuário atual
SELECT SESSION_USER();
-> guest@%
SYSTEM_USER();Retorna o usuário atual
SELECT SYSTEM_USER();
-> guest@%
USER();Retorna o usuário atual
SELECT USER();
-> guest@%
VERSION();Retorna o número da versão do banco de dados
SELECT VERSION();
-> 5.6.34