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,