Sigo robando con funciones de mysql.
GROUP_CONCAT()
Esta está rebuena. Convierte varias filas en una sola cadena.
SELECT department,
GROUP_CONCAT(name ORDER BY name SEPARATOR ', ')
FROM employee
GROUP BY department;
Resultado:
IT Alice, Bob, Charlie
Finance John, Mary
Ideal para reportes.
IFNULL()
Reemplaza un NULL por un valor.
SELECT IFNULL(phone, 'No disponible')
FROM customer;
Mucho más limpio que hacerlo desde la aplicación.
COALESCE()
Devuelve el primer valor no nulo.
SELECT COALESCE(mobile, phone, email);
Mucho más flexible que IFNULL().
UUID()
Genera un UUID.
SELECT UUID();
Perfecto para claves distribuidas.
UUID_TO_BIN() y BIN_TO_UUID()
Si almacenás UUID como CHAR(36) desperdiciás espacio y rendimiento.
INSERT INTO customer(id)
VALUES(UUID_TO_BIN(UUID()));
Y para leerlo:
SELECT BIN_TO_UUID(id)
FROM customer;
Es una mejora de rendimiento bastante importante para tablas grandes.
JSON_PRETTY()
Cuando trabajás con columnas JSON.
SELECT JSON_PRETTY(profile)
FROM customer;
En lugar de:
{"name":"John","age":35,"roles":["admin","user"]}
Obtendrás:
{
"name": "John",
"age": 35,
"roles": [
"admin",
"user"
]
}
Ideal para debugging.
JSON_EXTRACT()
Leer propiedades de un JSON sin traerlo completo.
SELECT JSON_EXTRACT(profile, '$.address.city');
o el operador corto
SELECT profile->'$.address.city';
REGEXP_REPLACE()
Reemplazo usando expresiones regulares.
SELECT REGEXP_REPLACE(
'Tel: 343-555-1234',
'[0-9]',
'X');
Resultado
Tel: XXX-XXX-XXXX
FORMAT()
Formatea números.
SELECT FORMAT(1234567.891, 2);
Resultado
1,234,567.89
Muy útil para reportes.
TIMESTAMPDIFF()
Calcular diferencias de fechas.
SELECT TIMESTAMPDIFF(
YEAR,
birth_date,
CURDATE())
FROM employee;
Obtiene la edad.
Y si se me olvidó alguna, ponela en los comentarios.

No hay comentarios.:
Publicar un comentario