Comparer des valeurs avec les opérateurs de comparaison logiques T-SQL

Opérateurs de comparaison du langage T-SQL les plus courants avec des exemples.

Voici une liste avec les opérateurs de comparaison et de logique couramment utilisés en langage T-SQL, avec des exemples de requêtes. Les exemples exposés ici vont des plus simples au plus complexes. De plus le code de création des tables d’exemple, ainsi que le résultat des requêtes sont disponibles à chaque section.

Préparer les tables utilisées par les opérateurs T-SQL

Les 4 tables utilisées ici sont les suivantes, elles sont volontairement basiques pour illustrer facilement les cas de figures.

  • Clients
  • Commandes
  • Produits
  • Employés

Créer la structure des tables en T-SQL

Exécuter ce code depuis une fenêtre SSMS pour ajouter les tables à votre base de données.

CREATE TABLE Clients (
   IDClient INT,
   Nom VARCHAR(255),
   Pays VARCHAR(255)
);

CREATE TABLE Commandes (
   IDCommande INT,
   IDClient INT,
   DateCommande DATE
);

CREATE TABLE Produits (
   IDProduit INT,
   NomProduit VARCHAR(255),
   Prix DECIMAL(10,2),
   Poids DECIMAL(10,2)
);

CREATE TABLE Employes (
   IDEmploye INT,
   NomEmploye VARCHAR(255),
   Age INT,
   Departement VARCHAR(255)
);

Insérer des données dans chaque table

Copier et exécuter ces lignes pour insérer quelques lignes dans chacune des 4 tables.

INSERT INTO Clients (IDClient, Nom, Pays)
VALUES (1, 'John Smith', 'USA'),
       (2, 'Jane Doe', 'Canada'),
       (3, 'Bob Johnson', 'USA');

INSERT INTO Commandes (IDCommande, IDClient, DateCommande)
VALUES (1, 1, '2022-01-01'),
       (2, 1, '2022-02-01'),
       (3, 2, '2022-03-01'),
       (4, 3, '2022-04-01');

INSERT INTO Produits (IDProduit, NomProduit, Prix, Poids)
VALUES (1, 'Ordinateur', 1000, 20),
       (2, 'Imprimante', 500, 10),
       (3, 'Ecran', 300, 15);

INSERT INTO Employes (IDEmploye, NomEmploye, Age, Departement)
VALUES (1, 'John Smith', 35, 'IT'),
       (2, 'Jane Doe', 30, 'Ventes'),
       (3, 'Bob Johnson', 40, 'IT');

Une fois les tables créées et alimentées avec quelques données d’exemple, passons à la pratique avec des cas concrets. La liste des opérateurs de comparaison T-SQL abordés dans ce tutoriel est la suivante:

  • Egal à : =
  • Supérieur à : >
  • Supérieur ou égal à : <=
  • Inférieur : <
  • Inférieur ou égal : <=
  • Et : AND
  • Ou : OR
  • Comme : LIKE
  • Contient : CONTAINS

1. Opérateur de comparaison égal à : =

L’opérateur de comparaison « = », égal en Français, permet de comparer si deux valeurs sont égales.

Exemple simple

SELECT *
FROM Clients
WHERE IDClient = 1;

Le résultat est une ligne unique avec le client numéro 1, soit John Smith.

IDClientNomPays
1John SmithUSA

Exemple complexe

SELECT COUNT(*)
FROM Commandes
WHERE DateCommande = (
   SELECT MAX(DateCommande)
   FROM Commandes
);

La requête retourne 1.

Cette requête retourne le nombre de commandes qui ont la date de commande la plus récente. Elle utilise l’opérateur de comparaison « = » pour comparer la date de chaque commande avec la date de commande la plus récente, qui est retournée par la sous-requête:

SELECT MAX(DateCommande)
FROM Commandes

2. Les opérateurs de comparaison SQL Server différent de : <> ou !=

L’opérateur de comparaison « <> » ou « != », appelé différent de en Français, permet de comparer si deux valeurs sont différentes.

Exemple simple

Ce premier exemple simple affiche les clients dont le pas est différent de USA.

SELECT *
FROM Clients
WHERE Pays <> 'USA';

Le résultat est donc le seul client avec Canada comme pays.

IDClientNomPays
2Jane DoeCanada

Exemple complexe

Cette requête retourne les clients qui sont dans un pays autre que les États-Unis et qui ont passé une commande comprenant au moins un produit dont le prix est supérieur à 500. Elle utilise l’opérateur de comparaison « <> » pour filtrer les clients qui ne sont pas dans les États-Unis.

Mais aussi l’opérateur « AND » pour combiner ce filtre avec le filtre sur les produits coûteux. De plus, une jointure T-SQL est nécessaire pour lier les tables Clients, Commandes et Produits.

SELECT *
FROM Clients c
   JOIN Commandes o
      ON c.IDClient = o.IDClient
   JOIN Produits p
      ON o.IDCommande = p.IDProduit
WHERE c.Pays <> 'USA'
   AND p.Prix > 500;

3. Opérateurs de comparaison T-SQL supérieur ou inférieur à : > ou <

L’opérateur de comparaison > ou <, c’est à dire supérieur ou inférieur, de manière stricte, permet de comparer si une valeur est supérieure à une autre.

Exemple simple

SELECT *
FROM Produits
WHERE Prix > 500;

Le résultat est le seul produit avec un prix supérieur à 500. soit l’ordinateur.

IDProduitNomProduitPrixPoids
1Ordinateur100020

Exemple complexe

Cette requête retourne les noms des clients qui ont passé plus d’une commande. Elle utilise l’opérateur de comparaison > pour filtrer les groupes de clients ayant plus d’une commande, en utilisant la clause HAVING COUNT(*) > 1.

SELECT c.Nom, COUNT(*) as 'Nombre de commandes'
FROM Clients c
JOIN Commandes o ON c.IDClient = o.IDClient
GROUP BY c.Nom
HAVING COUNT(*) > 1;

Le résultat est le suivant, soit le client John Smith avec 2 commandes passées.

NomNombre de commandes
John Smith2

Pour écrire une requête T-SQL et utiliser l’opérateur de comparaison inférieur à, utiliser la même logique, mais à l’envers.

Opérateur JOIN en T-SQL pour joindre les données

4. Opérateurs de comparaison SQL Server supérieur ou égal à et inférieur ou égal à

Les opérateurs de comparaison supérieur ou égal et inférieur ou égal, soit >= ou <= permettent de comparer si une valeur est supérieure ou égale à une autre, ou inférieure ou égale à une autre, respectivement.

Exemple simple

SELECT *
FROM Employes
WHERE Age >= 35;
IDEmployeNomEmployeAgeDepartement
1John Smith35IT
3Bob Johnson40IT

Exemple complexe

Cette requête retourne le prix moyen des produits qui ont un poids supérieur ou égal à 15 ou un prix supérieur ou égal à 500. Elle utilise l’opérateur de comparaison « >= » (supérieur ou égal à) pour filtrer les produits en fonction de leur poids et de leur prix, en utilisant la clause WHERE Poids >= 15 OR Prix >= 500.

SELECT AVG(Prix) as 'Prix moyen'
FROM Produits
WHERE Poids >= 15
   OR Prix >= 500;

Le résultat est le suivant:

Prix moyen
800

Pour écrire une requête avec l’opérateur de comparaison inférieur ou égal à, utiliser la même logique.

5. Opérateur T-SQL de logique AND

L’opérateur de logique AND, ET en Français, permet de combiner plusieurs conditions de filtrage dans la clause WHERE d’une requête. Les lignes qui ne satisfont pas à toutes les conditions sont exclues du résultat.

Exemple de requête avec l’opérateur AND

SELECT *
FROM Employes
WHERE Age > 35
   AND Departement = 'IT';

Cette requête retourne les employés qui ont plus de 35 ans et qui travaillent dans le département IT. Elle utilise l’opérateur de logique « AND » pour combiner les conditions sur l’âge et le département, en utilisant la clause WHERE Age > 35 AND Departement = ‘IT’.

IDEmployeNomEmployeAgeDepartement
1John Smith35IT
3Bob Johnson40IT

6. Opérateur logique T-SQL OR

L’opérateur de logique « OR » permet de sélectionner les lignes qui satisfont à au moins une des conditions de filtrage dans la clause WHERE d’une requête.

Exemple de requête simple

SELECT *
FROM Produits
WHERE Prix < 500
   OR Poids > 15;
IDProduitNomProduitPrixPoids
1Ordinateur100020
3Ecran30015

Exemple complexe

Cette requête retourne les noms des clients qui ont passé moins de 2 commandes ou plus de 3 commandes. Elle utilise l’opérateur de logique « OR » pour combiner les conditions sur le nombre de commandes, en utilisant la clause HAVING COUNT(*) < 2 OR COUNT(*) > 3.

SELECT 
   c.Nom,
   COUNT(*) as 'Nombre de commandes'
FROM Clients c
   JOIN Commandes o
      ON c.IDClient = o.IDClient
GROUP BY c.Nom
   HAVING COUNT(*) < 2
      OR COUNT(*) > 3;
NomNombre de commandes
Jane Doe1
Bob Johnson1

7. Opérateur logique pour comparer des chaînes de caractères avec LIKE

L’opérateur de chaîne de caractères « LIKE » permet de filtrer les lignes qui contiennent une chaîne de caractères spécifique. On peut utiliser des caractères génériques tels que « % » (qui correspond à n’importe quel nombre de caractères) et « _ » (qui correspond à un seul caractère) dans la chaîne de caractères à rechercher.

Il est possible d’utiliser les expressions régulières disponibles avec SQL Server dans la clause LIKE pour les recherches complexes.

Exemple simple

SELECT *
FROM Clients
WHERE Nom LIKE 'J%';

Cette requête retourne les clients dont le nom commence par « J ». Elle utilise l’opérateur de chaîne de caractères « LIKE » et le caractère générique « % » pour filtrer les clients en fonction de leur nom, en utilisant la clause WHERE Nom LIKE 'J%'.

IDClientNomPays
1John SmithUSA

Exemple complexe

SELECT *
FROM Clients
WHERE Nom LIKE 'J%'
   OR Pays LIKE 'C%';

Cette requête retourne les clients dont le nom commence par « J » ou qui habitent dans un pays dont le nom commence par « C ». Elle utilise l’opérateur de chaîne de caractères « LIKE » et les caractères génériques « % » et « _ » pour filtrer les clients en fonction de leur nom et de leur pays, en utilisant la clause WHERE Nom LIKE 'J%' OR Pays LIKE 'C%'.

Le résultat est le suivant:

DClientNomPays
1John SmithUSA
2Jane DoeCanada

8. Une fonction logique SQL Server pour rechercher du texte avec CONTAINS

La fonction de chaîne de caractères « CONTAINS » permet de filtrer les lignes qui contiennent un mot ou une expression spécifiques. Elle fait partie des opérateurs de comparaison T-SQL qui sont souvent utilisés avec une colonne de type « texte » indexée. Comme une colonne « Description » dans une table de produits.

Exemple simple

SELECT *
FROM Produits
WHERE CONTAINS(Description, 'écran');
IDProduitNomProduitPrixPoidsDescription
3Ecran30015Un grand écran de qualité supérieure

Exemple complexe

Cette requête retourne les produits qui contiennent le mot « écran » dans leur description et qui ont un prix supérieur à 500. Elle utilise la fonction de chaîne de caractères « CONTAINS » et l’opérateur de comparaison « > » pour filtrer les produits en fonction de leur description et de leur prix, en utilisant la clause WHERE CONTAINS(Description, ‘écran’) AND Prix > 500.

SELECT *
FROM Produits
WHERE CONTAINS(Description, 'écran') AND Prix > 500;
IDProduitNomProduitPrixPoidsDescription
1Ordinateur100020Un ordinateur performant avec un écran de qualité supérieure

Conclusion sur les opérateurs de comparaison SQL Server

Les opérateurs de comparaison T-SQL sont des outils utiles pour filtrer les lignes d’une table en fonction de différentes conditions. Ils peuvent être utilisés avec des opérateurs de logique tels que « AND » et « OR » pour combiner plusieurs conditions de filtrage.

Il est important de bien choisir les opérateurs de comparaison et de logique pour obtenir le résultat souhaité, tout en veillant à éviter les erreurs de syntaxe. Il est également recommandé de tester la performance des requêtes en utilisant des opérateurs différents pour s’assurer que la requête s’exécute de manière efficace.

Il est aussi conseillé de créer des index sur les colonnes qui sont souvent utilisées dans les conditions de filtrage, afin d’améliorer la performance des requêtes. Cependant, il est important de ne pas surcharger la base de données avec trop d’index, car cela peut également ralentir les performances. En général, il est important de bien planifier les requêtes et de choisir les bons opérateurs pour obtenir le résultat souhaité de manière efficace.

Les types de données SQL Server avec des exemples de code

2 réflexions sur “Comparer des valeurs avec les opérateurs de comparaison logiques T-SQL”

  1. Salut, les cours ne sont pas disponibles en PDF pour le moment. Des cours complets et en vidéos sur certains sujets seront bientôt disponibles (Q4 2023).
    En attendant vous pouvez enregistrer la page en favori.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut