Fonctions intégrées MySQL : manipulation de chaînes, calculs numériques, gestion des dates et contrôles conditionnels

Chaînes de caractères

MySQL propose plusieurs fonctions pour manipuler les chaînes. Voici les plus utilisées :

  • CONCAT(str1, str2, ...) : concatène plusieurs chaînes.
SELECT CONCAT('Bonjour', ' ', 'le', ' monde'); -- Résultat : Bonjour le monde

  • LOWER(str) : convertit tous les caractères en minuscules.
SELECT LOWER('MYSQL EST PUISSANT'); -- Résultat : mysql est puissant

  • UPPER(str) : convertit tous les caractères en majuscules.
SELECT UPPER('hello world'); -- Résultat : HELLO WORLD

  • LPAD(str, len, padstr) : complète la chaîne à gauche jusqu’à atteindre une longueur donnée.
SELECT LPAD('5', 4, '0'); -- Résultat : 0005

  • RPAD(str, len, padstr) : complète la chaîne à droite.
SELECT RPAD('5', 4, '0'); -- Résultat : 5000

  • TRIM(str) : supprime les espaces en début et fin de chaîne.
SELECT TRIM('   Données   '); -- Résultat : Données

  • SUBSTR(str, pos, len) : extrait une sous-chaîne à partir d'une position (indexée à 1).
SELECT SUBSTR('Extraction', 1, 4); -- Résultat : Extr

Opérations numériques

Les fonctions mathématiques facilitent les calculs directement dans les requêtes.

  • CEIL(X) : arrondit à l’entier supérieur.
SELECT CEIL(3.14); -- Résultat : 4

  • FLOOR(X) : arrondit à l’entier inférieur.
SELECT FLOOR(3.99); -- Résultat : 3

  • MOD(N, M) : retourne le reste de la division de N par M.
SELECT MOD(7, 3); -- Résultat : 1

  • RAND() : génère un nombre aléatoire entre 0 et 1.
SELECT RAND(); -- Exemple : 0.847239

  • ROUND(X, D) : arrondit X avec D décimales.
SELECT ROUND(2.675, 2); -- Résultat : 2.68

Exemple pratique : génération d’un code à 6 chiffres :

SELECT LPAD(FLOOR(RAND() * 1000000), 6, '0') AS code_aleatoire;

Gestion des dates et heures

MySQL offre des outils complets pour travailler avec les dates.

  • CURDATE() ou CURRENT_DATE() : renvoie la date du jour.
SELECT CURDATE(); -- Exemple : 2025-04-05

  • CURTIME() : renvoie l’heure actuelle.
SELECT CURTIME(); -- Exemple : 14:23:01

  • NOW() : renvoie date et heure courantes.
SELECT NOW(); -- Exemple : 2025-04-05 14:23:01

  • DATE_FORMAT(date, format) : formate la date selon un motif.
SELECT DATE_FORMAT(NOW(), '%W, %d %M %Y'); -- Exemple : samedi, 05 avril 2025
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s'); -- Exemple : 2025/04/05 14:23:01

  • Extraire des composants : année, mois, jour, etc.
SELECT YEAR(NOW()) AS annee, MONTH(NOW()) AS mois, DAY(NOW()) AS jour;
SELECT DAYNAME(NOW()) AS jour_semaine; -- Exemple : samedi
SELECT WEEKDAY('2025-04-05'); -- 5 (lundi = 0)

  • DATE_ADD() / DATE_SUB() : ajoute ou soustrait un intervalle.
SELECT DATE_ADD('2025-04-05', INTERVAL 2 MONTH); -- Résultat : 2025-06-05
SELECT DATE_SUB('2025-04-05', INTERVAL 1 DAY); -- Résultat : 2025-04-04

  • DATEDIFF(date1, date2) : différence en jours entre deux dates.
SELECT DATEDIFF('2025-04-10', '2025-04-05'); -- Résultat : 5

  • UNIX_TIMESTAMP() : renvoie le timestamp Unix (secondes depuis 1970).
SELECT UNIX_TIMESTAMP(NOW()); -- Exemple : 1743853381

  • FROM_UNIXTIME() : convertit un timestamp en date lisible.
SELECT FROM_UNIXTIME(1743853381); -- Résultat : 2025-04-05 14:23:01
-- Avec format personnalisé
SELECT FROM_UNIXTIME(1743853381, '%d/%m/%Y %Hh%M'); -- 05/04/2025 14h23

Pour les timestamps en millisecondes (13 chiffres) :

SELECT FROM_UNIXTIME(1627311955999 / 1000, '%Y-%m-%d %H:%i:%s');

Contrôles de flux

Permettent d’introduire de la logique conditionnelle dans les requêtes SQL.

  • IF(condition, val_si_vrai, val_si_faux) : évaluation binaire.
SELECT IF(5 > 3, 'Oui', 'Non') AS resultat; -- Résultat : Oui

  • IFNULL(expr1, expr2) : si expr1 est NULL, retourne expr2.
SELECT IFNULL(NULL, 'valeur par défaut'); -- Résultat : valeur par défaut
SELECT IFNULL('texte', 'autre'); -- Résultat : texte

  • CASE : structure conditionnelle multiple.
SELECT *,
  CASE niveau
    WHEN 'A' THEN 'Expert'
    WHEN 'B' THEN 'Intermédiaire'
    WHEN 'C' THEN 'Débutant'
    ELSE 'Inconnu'
  END AS interpretation
FROM utilisateurs;

Étiquettes: MySQL fonctions SQL chaînes de caractères opérations numériques gestion des dates

Publié le 27 août à 04h55