Todas las funciones:
Referencia de funciones de MySql
Funciones de control de flujo:
CASE
value
WHEN [compare_value
] THEN result
[WHEN [compare_value
] THEN result
...] [ELSE result
] END
CASE WHEN [
condition
] THEN result
[WHEN [condition
] THEN result
...] [ELSE result
] END
Evalua una condición y dependiendo del resultado nos devuelve un valor u otro.
IF(
expr1
,valor_si_cierto
,valor_si_falso
)
Si expresión 1 es cierto devuelve valor_si_cierto y si no devuelve valor_si_falsi
Si la expresión 1 es nulo devuelve expresión 2
select rating, case rating when 'G' then 'Para todos los públicos' when 'PG' then 'Menores acompañados' when 'R' then 'Para adultos' else 'Otros' end tipo -- Alias para que no salga un churro from film select length, case when length<70 then 'Cortita' when length<130 then 'Normal' else 'Tostón' end duracion from film SELECT *, case when amount<4 then 'bajo' when amount <7 then 'medio' else 'alto' end as tipo , if (amount<6,'barato','caro') precio, if (amount between 4 and 6,'medio','') precio2, if(amount<4,'bajo',if(amount<7,'medio','alto')) tipo2 FROM sakila.payment; select case dayofweek(payment_date) when 1 then 'Domingo' when 2 then 'Lunes' when 3 then 'Martes' when 4 then 'Miércoles' when 5 then 'Jueves' when 6 then 'Viernes' when 7 then 'Sábado' end dias,count(payment_id) cuenta, sum(amount) total,avg(amount) media from payment group by dias; select *, case staff_id when 1 then 'Ana' when 2 then 'Juan' end as empleado FROM sakila.payment; select title, if(replacement_cost>20,concat('Descuento: ',replacement_cost*.9) ,replacement_cost) coste from film; select ifnull(8,0), ifnull(null,0),0+null,concat('Ana',null)
Funciones matemáticas:
Redondea un número a las posiciones decimales que queramos
select round(4.9), floor(4.9), ceil(4.9),truncate(4.9,0), round(-4.9), floor(-4.9), ceil(-4.9),truncate(-4.9,0), sign(4.9),sign(-4.9),abs(-4.9);
Funciones de cadena:
Concatena una o varias cadenas
CONCAT_WS(
separator
,str1
,str2
,...)
Lo mismo pero con un separador
LOCATE(
, substr
,str
)LOCATE(
substr
,str
,pos
)
Devuelve la posición de una cadena dentro de otra
Devuelve len caracteres de la cadena empezando por la izquierda
Devuelve la longitud de la cadena
LOWER(
str
) LCASE(str)
Pasa la cadena a minúsculas
Invierte la cadena
Devuelve len caracteres de la cadena empezando por la derecha
SUBSTRING(
, str
,pos
)SUBSTRING(
, str
FROM pos
)SUBSTRING(
, str
,pos
,len
)SUBSTRING(
str
FROM pos
FOR len
)
Para obtener subcadenas de una cadena desde una posición y con la longitud que queramos.
Pasa la cadena a mayúsculas
select concat(first_name,' ',last_name) cliente, concat_ws(' - ',first_name, last_name,email) nombre , length(first_name) longitud, left(first_name,2) izq, right(first_name,2) der, locate('@',email) pos, substr(last_name,4,2) subcadena, substr(email,1,locate('@',email)-1) lmail, substr(email,locate('@',email)+1) rmail, reverse(first_name) vuelta, lower(first_name) minusculas, upper(email) mayusculas from customer SELECT * FROM sakila.film where length(title)>20; select length(first_name), concat(first_name,' ',last_name), left(first_name,3), right(last_name,3) nombre, lcase(first_name), ucase(last_name) , concat(ucase(left(first_name,1)),lcase(substr(first_name,2))), reverse(first_name), replace(first_name,'P','##') from actor where first_name=reverse(first_name) update actor set first_name=concat(ucase(left(first_name,1)),lcase(substr(first_name,2))), last_name=concat(ucase(left(last_name,1)),lcase(substr(last_name,2))) where actor_id>=1
Funciones de fecha:
Fecha actual
Hora actual
Fecha y hora actual.
Formatea una fecha con el formato específicado.
DAYOFMONTH(
date
)DAYOFWEEK(
date
)DAYOFYEAR(
date
)
Devuelven el día del mes, de la semana y del año respectivamente
HOUR(
time
)MINUTE(
time
)SECOND(
time
)MONTH(
date
)YEAR(
date
)
Devuelven la hora, el minuto, el segundo, el mes y el año de una fecha
select curtime(),curdate(),now(), week(curdate()),year(curdate()),month(curdate()), day(curdate()),hour(curtime()),monthname(now()), dayname(now()),dayname('1985-03-07'), dayofyear(now()),last_day(now()), date_format(now(),'%e-%m-%y %H:%i'),utc_date() SELECT * FROM sakila.payment where dayofweek(payment_date)=3; SELECT * FROM sakila.payment where date_format(payment_date,'%w')=2; SELECT * FROM sakila.payment where day(payment_date)=day(curdate()) ;
Intervalos en Mysql:
https://dev.mysql.com/doc/refman/8.0/en/expressions.html#temporal-intervals
Funciones de conversión:
Convierte una expresión al tipo que le digamos
select '8'>'100', cast('8' as signed)>cast('100' as signed);
Funciones de encriptación:
select aes_decrypt(aes_encrypt('Hola que tal','123'),'123'); select md5('hola que tal'), md5('tomateofñlkfñdfñlghfñgsipshdfisu'), sha1('hola que tal'), sha2('hola que tal', 256)
Funciones de información:
select database(), current_user(), last_insert_id(), row_count(), version(); insert into country(country) values('Utopía'); set @a=last_insert_id(); insert into city(city,country_id) values ('Nowhere',@a); insert into city(city,country_id) values ('Somewhere',@a);
https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_last-insert-id