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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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
1 2 3 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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
1 2 | select '8' > '100' , cast ( '8' as signed)> cast ( '100' as signed); |
Funciones de encriptación:
1 2 3 4 5 6 | 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:
1 2 3 4 5 6 7 | 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