Commandes SQL

Ce document me sert de rappel concernant les commandes SQL.
Supprimer tout le champ à partir d’une chaine si elle existe :
# On met à jour le champ en tronquant à partir de la chaine UPDATE maBase.maTable as data SET data.monChamp = SUBSTRING_INDEX(data.monChamp, "chaine", 1) WHERE data.id IN ( Select * FROM ( Select data2.id FROM maTable as data2 WHERE data2.monChamp like "%chaine%" ) tmp ) ;
Calculer un âge avec une date de naissance :
CREATE FUNCTION `AGE` (`naissance` DATE) RETURNS INT(11) BEGIN DECLARE age INT; # On fait attention aux années bissextile IF (DAY(current_date) >= DAY(naissance) AND MONTH(current_date) >= MONTH(naissance)) OR (MONTH(current_date) > MONTH(naissance)) THEN set age = YEAR(current_date) - YEAR(naissance); ELSE set age = YEAR(current_date) - YEAR(naissance) - 1; END IF; RETURN (age); END
Calculer les jours restant jusqu’à une date :
CREATE FUNCTION `jrest` (`naissance` DATE) RETURNS INT(11) BEGIN IF (DATEDIFF(CONCAT(YEAR(NOW()), '-', LPAD( MONTH(naissance), 2, '0'), '-', LPAD( DAY(naissance), 2, '0')), NOW())) > 0 THEN RETURN DATEDIFF(CONCAT(YEAR(NOW()), '-', LPAD( MONTH(naissance), 2, '0'), '-', LPAD( DAY(naissance), 2, '0')), NOW()); END IF; RETURN DATEDIFF(CONCAT(YEAR(NOW() + INTERVAL 1 YEAR), '-', LPAD( MONTH(naissance), 2, '0'), '-', LPAD( DAY(naissance), 2, '0')), NOW()); END