-- Funciones específicas de Mysql
-- Funciones de cadena, de fecha, aritméticas,....
-- Funciones de cadena
-- CONCAT para concatenar cadenas
select CONCAT(first_name,' ',last_name) nombre from actor;
-- Cuidado porque al concatenar un valor nulo con valor válidos el nulo 'se contagia'
-- es decir, concat(cualquier-valor,null)-->null
select CONCAT(address,' - ',address2,' (',postal_code,')') direccion from address;
-- Subcadenas SUBSTRING(posicion, longitud)
-- Ojo, las cadenas empiezan en 1
select substring(first_name,2,3) from actor;
-- Podemos usar valores negativos
select substring(first_name,-3,1) from actor;
-- Por ejemplo la primera letra:
select substring(first_name,1,1) from actor;
-- La última
select substring(first_name,-1,1) from actor;
-- Las funciones las pudo utilizar en el select o en otras partes de la consulta
-- Por ejemplo: actores cuyo nombre acaba en 'E'
-- El substring lo utilizo en el where
select * from actor
where substring(first_name,-1,1)='e';
-- Actores ordenador por la última letra del nombre
select * from actor
order by substring(first_name,-1,1);
-- longitud de ua cadena
select length(first_name) longitud from actor;
-- Paises ordenados por la longitud de su nombre
select * from country
order by length(country);
-- Pasar a mayúsculas o minúsculas
select upper(country) mayusculas,lower(country) minusculas from country;
-- Puedo reemplazar una cadena por otra
select replace(country,'a','@') pais from country;
-- trim nos elimina espacios del principio y del fin
-- Esto es super útil en la vida real porque ni os imagináis la cantidad de
-- espacios basura que hay en las bases de datos
select trim(' asdasd ') foo;
-- Yo muchas veces hago cosas como esta
-- Esto me limpia de espacios ese campo
update actor set first_name=trim(first_name);
-- Concatena con el reparador que yo le ponga
select concat_ws(' ',first_name,last_name) nombre from actor;
-- Es muy útil cuando quiero juntar varios campos usando el mismo separador
select concat_ws(' ',address,address2,district,postal_code) direccion from address;