SQL · Fonctions

Guide complet des principales fonctions SQL

Maîtrisez toutes les fonctions SQL essentielles : transformation, chaînes de caractères, dates, mathématiques, conditionnelles et agrégation. Exemples pratiques pour chaque fonction.

Niveau : débutant à intermédiaire | Temps de lecture : 12 min | Mis à jour : avril 2026

1. Fonctions de transformation (CAST et CONVERT)

Ces fonctions convertissent une valeur d'un type de données à un autre, essentielles pour harmoniser les formats avant analyse.

CAST

CAST
SELECT CAST('2023-10-25' AS DATE) AS date_converted;

CONVERT

Similaire à CAST, mais avec une syntaxe spécifique à certains SGBD comme SQL Server.

CONVERT (SQL Server)
SELECT CONVERT(DATE, '2023-10-25') AS date_converted;
Différence clé :

CAST est standard SQL et portable. CONVERT est spécifique à certains SGBD (SQL Server, Sybase) mais offre plus d'options de formatage.

2. Manipulation des chaînes de caractères

CONCAT

Concatène deux ou plusieurs chaînes de caractères.

CONCAT
SELECT CONCAT('Bonjour', ' ', 'le monde') AS message;

SUBSTRING

Extrait une sous-chaîne d'une chaîne de caractères.

SUBSTRING
SELECT SUBSTRING('Bonjour le monde', 9, 2) AS sous_chaine; -- Résultat: "le"

LENGTH (ou LEN)

Retourne la longueur d'une chaîne de caractères.

LENGTH
SELECT LENGTH('Bonjour') AS longueur; -- Résultat: 7

UPPER et LOWER

Convertit une chaîne en majuscules ou en minuscules.

UPPER / LOWER
SELECT UPPER('Bonjour') AS majuscules; -- Résultat: "BONJOUR"
SELECT LOWER('BONJOUR') AS minuscules; -- Résultat: "bonjour"

TRIM, LTRIM, RTRIM

Supprime les espaces en début et/ou fin de chaîne.

TRIM / LTRIM / RTRIM
SELECT TRIM('  Bonjour  ') AS sans_espaces; -- Résultat: "Bonjour"
SELECT LTRIM('  Bonjour') AS sans_espaces_gauche; -- Résultat: "Bonjour"
SELECT RTRIM('Bonjour  ') AS sans_espaces_droite; -- Résultat: "Bonjour"

REPLACE

Remplace toutes les occurrences d'une sous-chaîne par une autre.

REPLACE
SELECT REPLACE('Bonjour le monde', 'le', 'la') AS remplace; -- Résultat: "Bonjour la monde"

Illustration des fonctions SQL de manipulation de chaînes

schéma des fonctions CONCAT, SUBSTRING, TRIM, REPLACE

3. Manipulation des dates

CURRENT_DATE (ou GETDATE)

Retourne la date actuelle.

CURRENT_DATE
SELECT CURRENT_DATE AS aujourdhui;

DATEADD

Ajoute un intervalle de temps à une date.

DATEADD
SELECT DATEADD(DAY, 5, '2023-10-25') AS date_ajoutee; -- Ajoute 5 jours

DATEDIFF

Calcule la différence entre deux dates.

DATEDIFF
SELECT DATEDIFF(DAY, '2023-10-25', '2023-11-01') AS difference_jours; -- Résultat: 7

DATEPART

Extrait une partie spécifique d'une date (année, mois, jour, etc.).

DATEPART
SELECT DATEPART(YEAR, '2023-10-25') AS annee; -- Résultat: 2023

FORMAT

Formate une date selon un modèle spécifique.

FORMAT
SELECT FORMAT('2023-10-25', 'dd/MM/yyyy') AS date_formatee; -- Résultat: "25/10/2023"
Note SGBD :

MySQL utilise DATE_ADD(), DATEDIFF() et DATE_FORMAT(). PostgreSQL utilise INTERVAL, AGE() et TO_CHAR(). Les concepts sont similaires, les noms diffèrent.

4. Fonctions mathématiques

ROUND

Arrondit un nombre à un certain nombre de décimales.

ROUND
SELECT ROUND(3.14159, 2) AS arrondi; -- Résultat: 3.14

CEILING et FLOOR

Arrondit un nombre à l'entier supérieur ou inférieur.

CEILING / FLOOR
SELECT CEILING(3.14159) AS plafond; -- Résultat: 4
SELECT FLOOR(3.14159) AS plancher; -- Résultat: 3

ABS

Retourne la valeur absolue d'un nombre.

ABS
SELECT ABS(-10) AS absolue; -- Résultat: 10

POWER

Calcule la puissance d'un nombre.

POWER
SELECT POWER(2, 3) AS puissance; -- Résultat: 8

SQRT

Calcule la racine carrée d'un nombre.

SQRT
SELECT SQRT(16) AS racine; -- Résultat: 4

5. Fonctions conditionnelles

CASE

Permet de définir des conditions dans une requête (équivalent du IF/THEN/ELSE).

CASE
SELECT nom,
       CASE
           WHEN age < 18 THEN 'Mineur'
           ELSE 'Majeur'
       END AS statut
FROM utilisateurs;

COALESCE

Retourne la première valeur non nulle dans une liste. Idéal pour traiter les NULL.

COALESCE
SELECT COALESCE(NULL, 'Valeur par défaut') AS valeur; -- Résultat: "Valeur par défaut"

NULLIF

Retourne NULL si deux valeurs sont égales. Utile pour éviter la division par zéro.

NULLIF
SELECT NULLIF(10, 10) AS resultat; -- Résultat: NULL
SELECT 10 / NULLIF(0, 0) AS pas_erreur; -- Évite division par zéro
Astuce pratique :

Combinez NULLIF et COALESCE pour gérer les divisions par zéro :
SELECT COALESCE(ventes / NULLIF(nb_clients, 0), 0) AS moyenne_par_client FROM stats;

6. Fonctions d'agrégation

COUNT

Compte le nombre de lignes.

COUNT
SELECT COUNT(*) AS total_lignes FROM utilisateurs;
SELECT COUNT(DISTINCT ville) AS villes_distinctes FROM utilisateurs;

SUM

Calcule la somme des valeurs d'une colonne.

SUM
SELECT SUM(salaire) AS total_salaires FROM employes;

AVG

Calcule la moyenne des valeurs d'une colonne.

AVG
SELECT AVG(salaire) AS moyenne_salaires FROM employes;

MIN et MAX

Retourne la valeur minimale ou maximale d'une colonne.

MIN / MAX
SELECT MIN(salaire) AS salaire_min, MAX(salaire) AS salaire_max FROM employes;

GROUP_CONCAT (ou STRING_AGG)

Concatène les valeurs d'une colonne pour chaque groupe.

STRING_AGG / GROUP_CONCAT
-- SQL Server, PostgreSQL
SELECT departement, STRING_AGG(nom, ', ') AS employes
FROM employes
GROUP BY departement;

-- MySQL
SELECT departement, GROUP_CONCAT(nom SEPARATOR ', ') AS employes
FROM employes
GROUP BY departement;
+40%
de productivité avec la maîtrise des fonctions SQL
Étude DBA, 2025
15+
fonctions à connaître absolument
Couvertes dans ce guide

Récapitulatif des fonctions SQL

Catégorie Fonction Description Exemple
Transformation CAST Convertit un type de données CAST('2023-10-25' AS DATE)
CONVERT Convertit (syntaxe spécifique) CONVERT(DATE, '2023-10-25')
Chaînes CONCAT Concatène des chaînes CONCAT('A', 'B')
SUBSTRING Extrait une sous-chaîne SUBSTRING('Bonjour', 2, 3)
LENGTH Longueur d'une chaîne LENGTH('Bonjour')
UPPER/LOWER Majuscules/minuscules UPPER('test')
TRIM Supprime les espaces TRIM(' test ')
REPLACE Remplace une sous-chaîne REPLACE('abc', 'b', 'x')
Dates CURRENT_DATE Date actuelle CURRENT_DATE
DATEADD Ajoute un intervalle DATEADD(DAY, 5, '2023-10-25')
DATEDIFF Différence entre dates DATEDIFF(DAY, date1, date2)
DATEPART Extrait une partie DATEPART(YEAR, date)
FORMAT Formate une date FORMAT(date, 'dd/MM/yyyy')
Maths ROUND Arrondit ROUND(3.14159, 2)
CEILING/FLOOR Entier sup/inf CEILING(3.14)
ABS Valeur absolue ABS(-10)
POWER Puissance POWER(2, 3)
SQRT Racine carrée SQRT(16)
Conditionnelles CASE Conditions CASE WHEN age<18 THEN 'Mineur' END
COALESCE Première non NULL COALESCE(col, 'default')
NULLIF NULL si égaux NULLIF(a, b)
Agrégation COUNT Compte les lignes COUNT(*)
SUM Somme SUM(colonne)
AVG Moyenne AVG(colonne)
MIN/MAX Min/Max MIN(colonne)
GROUP_CONCAT Concatène par groupe STRING_AGG(nom, ', ')

Particularités selon les SGBD

Fonction MySQL PostgreSQL SQL Server
Concaténation CONCAT() ou || || ou CONCAT() CONCAT() ou +
Longueur chaîne CHAR_LENGTH() ou LENGTH() LENGTH() ou CHAR_LENGTH() LEN()
Date actuelle CURDATE(), NOW() CURRENT_DATE, NOW() GETDATE(), SYSDATETIME()
Formatage date DATE_FORMAT() TO_CHAR() FORMAT()
Concaténation groupe GROUP_CONCAT() STRING_AGG() STRING_AGG()
Conseil : Pour du code portable entre SGBD, privilégiez les fonctions standard SQL quand elles existent (CAST, COALESCE, CASE, SUBSTRING).

FAQ — Fonctions SQL

Quelle est la différence entre CAST et CONVERT ?

CAST est standard SQL, portable sur tous les SGBD. CONVERT est spécifique à certains SGBD (SQL Server, Sybase) mais offre des options de formatage supplémentaires. Pour du code portable, préférez CAST.

Comment gérer la division par zéro en SQL ?

Utilisez NULLIF : SELECT valeur / NULLIF(diviseur, 0) FROM table; Retourne NULL au lieu d'une erreur. Combine avec COALESCE pour une valeur par défaut : COALESCE(valeur / NULLIF(diviseur, 0), 0).

Comment concaténer les valeurs d'une colonne par groupe ?

MySQL : GROUP_CONCAT(nom SEPARATOR ', ')
PostgreSQL / SQL Server : STRING_AGG(nom, ', ')
Ces fonctions regroupent les valeurs d'une colonne en une seule chaîne par groupe.

Comment extraire le mois ou l'année d'une date ?

EXTRACT(MONTH FROM date_column) (standard SQL)
DATEPART(MONTH, date_column) (SQL Server)
MONTH(date_column) (MySQL)
Tous retournent un entier (1-12 pour le mois, 4 chiffres pour l'année).

Quelle est la différence entre COUNT(*) et COUNT(colonne) ?

COUNT(*) compte toutes les lignes, y compris celles avec des NULL. COUNT(colonne) compte uniquement les lignes où la colonne n'est pas NULL. Pour compter les valeurs distinctes : COUNT(DISTINCT colonne).

Comment remplacer les valeurs NULL dans les résultats ?

Utilisez COALESCE(colonne, 'valeur_par_defaut') qui retourne la première valeur non NULL. Ou ISNULL(colonne, 'valeur_par_defaut') (SQL Server). Cela ne modifie pas la base, seulement l'affichage.

Conclusion

La maîtrise des fonctions SQL est essentielle pour tout analyste ou développeur de données. Ces fonctions vous permettent de transformer, nettoyer, calculer et agréger vos données directement dans la base, sans outils externes.

À retenir

  • Transformation : CAST, CONVERT pour harmoniser les types.
  • Chaînes : CONCAT, SUBSTRING, TRIM, REPLACE, UPPER/LOWER.
  • Dates : DATEADD, DATEDIFF, DATEPART, FORMAT.
  • Maths : ROUND, CEILING, FLOOR, ABS, POWER, SQRT.
  • Conditions : CASE, COALESCE, NULLIF.
  • Agrégation : COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT/STRING_AGG.
Pour aller plus loin : Découvrez notre tutoriel sur les fonctions de fenêtrage SQL (ROW_NUMBER, RANK, LEAD, LAG) pour des analyses avancées.
 

Recevez la veille IA & Data qui compte vraiment

 

    Analyses claires, outils concrets et tendances IA sans bruit.     Rejoignez les lecteurs de IANA Data.