Published on

September 7, 2021

Comprendre la clause WHERE dans SQL Server

SQL Server est un puissant système de gestion de base de données qui vous permet de manipuler et de récupérer des données à l’aide du langage SQL. L’une des fonctionnalités les plus importantes de SQL est la clause WHERE, qui vous permet de restreindre l’ensemble de données avec lequel vous interagissez. Dans ce tutoriel, nous explorerons différents exemples de l’utilisation efficace de la clause WHERE.

Utilisation de la clause WHERE avec des nombres

Lorsque vous travaillez avec des données numériques dans SQL Server, vous pouvez utiliser la clause WHERE pour filtrer les enregistrements en fonction de conditions spécifiques. Par exemple, la requête suivante récupère des données de la table “Employee” où BusinessEntityID est égal à 14 :

SELECT
   BusinessEntityID,
   NationalIDNumber
FROM
   HumanResources.Employee
WHERE
   BusinessEntityID = 14;

Cette requête renverra BusinessEntityID et NationalIDNumber pour l’employé ayant BusinessEntityID égal à 14.

Utilisation de la clause WHERE avec le type de données chaîne de caractères

Lorsque vous travaillez avec des données de type chaîne de caractères dans SQL Server, vous devez mettre la valeur de recherche entre guillemets simples. Par exemple, la requête suivante récupère des données de la table “Employee” où le JobTitle est “Senior Design Engineer” :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   JobTitle
FROM
   HumanResources.Employee
WHERE
   JobTitle = 'Senior Design Engineer';

Cette requête renverra BusinessEntityID, NationalIDNumber et JobTitle pour les employés ayant le titre de poste “Senior Design Engineer”.

Utilisation de la clause WHERE avec le type de données date

Lorsque vous travaillez avec des valeurs de date dans SQL Server, vous devez mettre la date entre guillemets simples. Par exemple, la requête suivante récupère des données de la table “Employee” où la HireDate est le 30 décembre 2010 :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   HireDate
FROM
   HumanResources.Employee
WHERE
   HireDate = '2010-12-30';

Cette requête renverra BusinessEntityID, NationalIDNumber et HireDate pour les employés embauchés le 30 décembre 2010.

Utilisation de la clause WHERE avec une plage de dates

Si vous devez trouver des données dans une plage de dates spécifique, vous pouvez utiliser l’opérateur BETWEEN en conjonction avec la clause WHERE. Par exemple, la requête suivante récupère des données de la table “Employee” où la HireDate est comprise entre le 30 janvier 2010 et le 30 janvier 2011 :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   Hiredate
FROM
   HumanResources.Employee
WHERE
   HireDate BETWEEN '2010-01-30' AND '2011-01-30';

Cette requête renverra BusinessEntityID, NationalIDNumber et HireDate pour les employés embauchés entre le 30 janvier 2010 et le 30 janvier 2011.

Utilisation de la clause WHERE avec des caractères génériques

L’opérateur LIKE dans SQL Server vous permet de rechercher des chaînes de caractères qui correspondent à un modèle spécifique. Par exemple, la requête suivante récupère des données de la table “Employee” où le LoginID contient la chaîne “roberto” :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   LoginID
FROM
   HumanResources.Employee
WHERE
   LoginID LIKE '%roberto%';

Cette requête renverra BusinessEntityID, NationalIDNumber et LoginID pour les employés dont le LoginID contient la chaîne “roberto”. Le signe “%” est utilisé comme caractère générique pour représenter n’importe quelle valeur.

Utilisation de la clause WHERE pour trouver des chaînes de caractères se terminant par un caractère spécifique

Vous pouvez également utiliser l’opérateur LIKE pour trouver des chaînes de caractères se terminant par un caractère spécifique. Par exemple, la requête suivante récupère des données de la table “Employee” où le LoginID se termine par le chiffre 1 :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   LoginID
FROM
   HumanResources.Employee
WHERE
   LoginID LIKE '%1';

Cette requête renverra BusinessEntityID, NationalIDNumber et LoginID pour les employés dont le LoginID se termine par le chiffre 1.

Utilisation de la clause WHERE pour trouver des chaînes de caractères commençant par une plage de lettres

L’opérateur LIKE peut également être utilisé pour trouver des chaînes de caractères commençant par une plage de lettres. Par exemple, la requête suivante récupère des données de la table “Employee” où le JobTitle commence par les lettres “a”, “b” ou “c” :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   JobTitle
FROM
   HumanResources.Employee
WHERE
   JobTitle LIKE '[a-c]%';

Cette requête renverra BusinessEntityID, NationalIDNumber et JobTitle pour les employés dont le JobTitle commence par les lettres “a”, “b” ou “c”.

Utilisation de la clause WHERE pour faire correspondre une liste de valeurs

Si vous avez plusieurs valeurs à comparer, vous pouvez utiliser l’opérateur IN dans la clause WHERE. Par exemple, la requête suivante récupère des données de la table “Employee” où le OrganizationLevel est 1, 3 ou 4 :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   LoginID,
   OrganizationNode,
   OrganizationLevel
FROM
   HumanResources.Employee
WHERE
   OrganizationLevel IN (1, 3, 4);

Cette requête renverra BusinessEntityID, NationalIDNumber, LoginID, OrganizationNode et OrganizationLevel pour les employés dont le OrganizationLevel est 1, 3 ou 4.

Utilisation de la clause WHERE avec des opérateurs logiques

La clause WHERE peut également être utilisée avec des opérateurs logiques tels que AND et OR pour combiner plusieurs conditions. Par exemple, la requête suivante récupère des données de la table “Employee” où la HireDate est postérieure au 30 janvier 2010 et le MaritalStatus est “S” (célibataire) :

SELECT
   BusinessEntityID,
   NationalIDNumber,
   MaritalStatus,
   HireDate
FROM
   HumanResources.Employee
WHERE
   HireDate > '2010-01-30'
   AND MaritalStatus = 'S';

Cette requête renverra BusinessEntityID, NationalIDNumber, MaritalStatus et HireDate pour les employés embauchés après le 30 janvier 2010 et qui sont célibataires.

Utilisation de la clause WHERE avec des fonctions

Vous pouvez également utiliser des fonctions dans la clause WHERE pour filtrer les données en fonction de critères spécifiques. Par exemple, la requête suivante récupère des données de la table “Employee” où la HireDate est dans le mois de mai :

SELECT
   OrganizationNode,
   OrganizationLevel,
   JobTitle,
   BirthDate,
   MaritalStatus,
   Gender,
   HireDate
FROM
   HumanResources.Employee
WHERE
   MONTH(HireDate) = 5;

Cette requête renverra OrganizationNode, OrganizationLevel, JobTitle, BirthDate, MaritalStatus, Gender et HireDate pour les employés embauchés au mois de mai.

Utilisation de la clause WHERE avec plusieurs tables

Parfois, vous devrez récupérer des données de plusieurs tables en fonction de conditions spécifiques. Dans de tels cas, vous pouvez utiliser la clause WHERE en conjonction avec des instructions JOIN. Par exemple, la requête suivante récupère des données de la table “Person” et de la table “Employee” où le FirstName commence par “Ja” et le genre est masculin :

SELECT
   p.FirstName,
   p.LastName,
   e.Gender
FROM
   Person.Person p
   INNER JOIN HumanResources.Employee e ON p.BusinessEntityID = e.BusinessEntityID
WHERE
   p.FirstName LIKE 'Ja%'
   AND e.Gender = 'M';

Cette requête renverra FirstName, LastName et Gender pour les employés dont le FirstName commence par “Ja” et le genre est masculin.

Utilisation de la clause WHERE avec des valeurs NULL

La clause WHERE peut également être utilisée pour filtrer les données en fonction des valeurs NULL. Par exemple, la requête suivante récupère des données de la table “Person” où le MiddleName est NULL :

SELECT
   BusinessEntityID,
   PersonType,
   NameStyle,
   Title,
   FirstName,
   MiddleName
FROM
   Person.Person
WHERE
   MiddleName IS NULL;

Cette requête renverra BusinessEntityID, PersonType, NameStyle, Title, FirstName et MiddleName pour les enregistrements où le MiddleName est NULL.

Utilisation de la clause WHERE avec des sous-requêtes

Les sous-requêtes peuvent être utilisées dans la clause WHERE pour filtrer les données en fonction des résultats d’une autre requête. Par exemple, la requête suivante récupère des données de la table “Person” où le BusinessEntityID est présent dans la table “Employee” et le SalariedFlag est 0 :

SELECT
   BusinessEntityID,
   PersonType,
   NameStyle,
   Title,
   FirstName,
Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.