Accéder au contenu principal

Tutoriel sur la correspondance des motifs SQL LIKE

Utilisez LIKE pour filtrer les enregistrements SQL sur des chaînes de caractères spécifiques. Ce tutoriel vous apprend à utiliser les caractères génériques, NOT, LOWER, UPPER et CASE WHEN avec LIKE.
Actualisé 4 oct. 2024  · 8 min de lecture

L'opérateur SQL LIKE pour la recherche de motifs

Qu'on le veuille ou non, l'opérateur LIKE est essentiel en SQL. Il permet aux professionnels de l'information de filtrer les données en fonction de chaînes de caractères spécifiques. Cet article propose un tutoriel rapide sur LIKE pour les débutants et les intermédiaires.

Pour exécuter facilement tous les exemples de code de ce tutoriel, vous pouvez créer gratuitement un classeur DataLab qui contient SQL, la base de données et tous les échantillons de code préchargés pour vous.

Devenez certifié SQL

Prouvez que vos compétences en SQL sont prêtes à l'emploi grâce à une certification.
Booster ma carrière

employés

emp_no

birth_date

first_name

last_name

sexe

hire_date

10001

1953-09-02T00:00:00.000Z

Georgi

Facello

M

1986-06-26T00:00:00.000Z

10002

1964-06-02T00:00:00.000Z

Bezalel

Simmel

F

1985-11-21T00:00:00.000Z

10003

1959-12-03T00:00:00.000Z

Parto

Bamford

M

1986-08-28T00:00:00.000Z

Supposons que vous disposiez d'une table employees et que vous souhaitiez trouver tous les noms commençant par ‘A’. Vous pourriez passer du temps à consulter le tableau manuellement. Mais pourquoi faire cela alors que vous disposez de l'opérateur LIKE ?

SELECT DISTINCT
	first_name
FROM employees
WHERE first_name LIKE 'A%'

La magie réside ici dans la clause `WHERE first_name LIKE ‘A%’`, qui signifie "trouver tous les first_name commençant par A et se terminant par un nombre quelconque de caractères". Le site `A%` est un modèle de correspondance. 

Le `%` n'est pas le seul caractère générique que vous pouvez utiliser avec l'opérateur LIKE. Vous pouvez également utiliser le signe de soulignement `_`

  • `%` correspond à n'importe quel nombre de caractères.
  • `_` correspond à n'importe quel caractère.

La syntaxe est facile à retenir. Il s'agit simplement

column_name LIKE pattern

Vous pouvez utiliser le site LIKE pour réaliser diverses combinaisons de motifs. Voici comment.

Exemples de LIKE SQL pour débutants

Vous trouverez ci-dessous quelques exemples pratiques d'utilisation de la déclaration LIKE et les résultats de notre échantillon de données. 

1. Utiliser LIKE pour une correspondance exacte des chaînes de caractères

Si vous souhaitez effectuer une recherche de chaîne exacte, utilisez LIKE sans ‘%’ ou ‘_’

SELECT
    first_name, last_name
FROM employees
WHERE first_name LIKE 'Barry' -- the same as WHERE first_name = ‘Barry’

2. Utiliser ‘%’ pour correspondre à n'importe quel nombre de caractères 

‘%’ peut être utilisé pour faire correspondre n'importe quel nombre de caractères (même zéro) - un nombre, un alphabet ou un symbole.

Supposons que vous souhaitiez trouver tous les employés dont le nom commence par ‘Adam’; vous pouvez utiliser le motif ‘Adam%’

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE 'Adam%'

Pour trouver des noms qui se terminent par ’Z’, essayez le modèle ‘%z’. Vous pouvez également utiliser plusieurs ‘%’ dans un même motif. Par exemple, si vous voulez trouver les noms qui contiennent z, utilisez ‘%z%’.

3. Utiliser ‘_’ pour correspondre à un (et un seul) caractère

Comme dans le jeu du pendu, le signe de soulignement _ ne peut contenir qu'un seul caractère.

Combien y a-t-il de façons d'épeler Le_n? Le motif correspondrait à tout ce qui est compris entre ‘Lexn’, ‘LeAn’, Le3n’, ou ‘Le-n’.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE 'Le_n'

Quels sont les différents noms ne comportant que trois caractères ? Nous pouvons le découvrir en utilisant trois underscores consécutifs ___ comme modèle.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE '___'

4. Utilisez les deux ‘%’ et ‘_’ pour correspondre à n'importe quel motif

Bien entendu, vous pouvez utiliser à la fois ‘%’ et ‘_’ pour créer des motifs intéressants. 

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE '%ann_'

Le motif ‘%ann_’ correspond à une chaîne qui commence par un nombre quelconque de caractères et se termine par ‘ann’ et un autre caractère.

5. Utiliser NOT pour trouver les chaînes qui ne correspondent pas à un motif

Que faire si vous voulez trouver toutes les lignes qui ne correspondent pas à un critère spécifique ? Vous pouvez utiliser l'opérateur NOT LIKE. Par exemple, pour trouver tous les titres à l'exception de Staff, nous pouvons utiliser la syntaxe suivante

`WHERE title NOT LIKE ‘Staff’`

Ceci est exactement équivalent à la syntaxe

`WHERE title != ‘Staff’`
SELECT DISTINCT
    title
FROM titles
WHERE title NOT LIKE 'Staff'

Bien entendu, vous pouvez utiliser `NOT LIKE` avec tous les motifs que nous avons décrits.

SELECT DISTINCT
    title
FROM titles 
WHERE title NOT LIKE '%engineer'

6. Utiliser LOWER (ou UPPER) avec LIKE pour la recherche de motifs insensibles à la casse

Si vous devez effectuer une recherche de motifs mais que vous ne savez pas si la chaîne est stockée en minuscules, en majuscules ou en caractères mixtes, vous pouvez utiliser la syntaxe suivante.

`LOWER(column_name) LIKE pattern`

La fonction LOWER() renvoie toutes les chaînes de caractères en minuscules, qu'elles soient stockées en majuscules, en minuscules ou en caractères mixtes. 

Lorsque vous utilisez la syntaxe, veillez à épeler le motif en minuscules ! Sinon, vous risquez de ne pas obtenir de résultats.

Vous pouvez également remplacer LOWER par UPPER dans la syntaxe ci-dessus. Veillez à épeler le motif en LETTRES MAJUSCULES.

`UPPER(column_name) LIKE PATTERN`

Par exemple, pour savoir si un employé s'appelle Joanne, JoAnne, Joanna ou JoAnna, essayez l'une des solutions suivantes.

SELECT DISTINCT
    first_name
FROM employees
WHERE lower(first_name) LIKE 'joann_'
SELECT DISTINCT
    first_name
FROM employees
WHERE UPPER(first_name) LIKE 'JOANN_'

7. SQL LIKE avec des valeurs multiples à l'aide de OR/AND

Vous pouvez également combiner plusieurs conditions à l'aide de la syntaxe LIKE

Par exemple, utilisez la condition OR pour trouver des résultats qui satisfont au moins un des multiples modèles LIKE.

SELECT DISTINCT
    first_name
FROM employees
WHERE
first_name LIKE 'Ad_l' OR
first_name LIKE 'Ad_m'

En revanche, pour trouver une chaîne de caractères qui répond à plusieurs conditions LIKE, utilisez le mot-clé AND.

SELECT DISTINCT
    first_name
FROM employees
WHERE
first_name LIKE '%am%' AND
first_name LIKE '%me%'

La syntaxe LIKE peut être appliquée à plusieurs colonnes, pour autant que leur type de variable soit un caractère de longueur variable (varchar). Sachant que nous pouvons trouver les noms des employés dont les initiales sont ‘Z. Z.’

SELECT DISTINCT
    first_name, last_name
FROM employees
WHERE
first_name LIKE 'Z%' AND
last_name LIKE 'Z%'

8. Utiliser LIKE dans le SELECT CASE WHEN clause 

Jusqu'à présent, nous nous sommes concentrés sur l'utilisation de LIKE comme condition de sélection des enregistrements dans la clause WHERE. Nous utilisons également LIKE dans la clause SELECT. Par exemple, pouvons-nous savoir combien d'employés portant le nom ‘Adam’ se trouvent dans notre base de données ?

SELECT
    COUNT(CASE WHEN first_name LIKE 'Adam' THEN 1 END) num_employees_adam
FROM employees

D'autre part, combien d'employés portent les initiales ‘A.Z.’?

SELECT
    COUNT(CASE WHEN first_name LIKE 'A%' AND last_name LIKE 'Z%' THEN 1 END) num_employees
FROM employees

Exemples intermédiaires de SQL LIKE

La fonction LIKE est largement similaire dans les différentes versions de SQL (par exemple PostgreSQL, MySQL, Redshift, etc.). Certains ont des variantes supplémentaires de la fonction LIKE qui méritent d'être mentionnées. 

1. Les ILIKE opérateur

Disponible dans Redshift et PostgreSQL, ILIKE est la version insensible à la casse de LIKE. Ainsi, tous les points suivants sont équivalents.

SELECT
  datacamp ILIKE ‘datacamp’, -- returns TRUE
  DATACAMP ILIKE ‘datacamp’, -- returns TRUE
  Datacamp ILIKE ‘datacamp’, -- returns TRUE
  datacamp ILIKE ‘DataCamp’, -- returns TRUE

2. Utilisation de crochets [] et [^] comme caractères génériques

Les utilisateurs de T-SQL ou de SQL Server disposent de caractères génériques supplémentaires pour des correspondances plus complexes.

La syntaxe des crochets [] correspond à tout caractère unique spécifique de la plage ou de l'ensemble. Par exemple, les éléments suivants renverront tous TRUE.

SELECT
  ‘Carson’ LIKE ‘[C-K]arson’, -- returns TRUE because C is in the range C-K
  ‘Karson’ LIKE ‘[C-K]arson’, -- returns TRUE because K is in range
  ‘Larson’ LIKE ‘[CKL]arson’, -- returns TRUE because L is in the set [CKL]
  ‘Parson’ LIKE ‘[C-K]arson’ -- returns FALSE because P is out of range

Le caractère générique caret-in-square-bracket [^] correspond à tout caractère unique qui n'est pas compris dans la plage ou l'ensemble spécifié. Pouvez-vous comprendre pourquoi les résultats suivants sont tels ? 

SELECT
  ‘Carson’ LIKE ‘[^C-K]arson’ -- returns FALSE 
  ‘Parson’ LIKE ‘[^C-K]arson’ -- returns TRUE

Ici, étant donné que C se situe dans la plage de [C-K], le motif ‘C’ ne correspondra pas à [^C-K]. Ainsi, ‘Carson’ ne correspondra pas à ‘[^C-K]arson.

3. Les RLIKE opérateur

Disponible dans MySQL, l'opérateur RLIKE reconnaît les expressions régulières (RegEx) dans le motif. RegEx est un outil puissant et polyvalent pour la recherche avancée de motifs. 

Il n'est pas inutile d'avoir une connaissance de base de RegEx, surtout si votre version de SQL prend en charge RLIKE. Vous pouvez en apprendre davantage sur RegEx grâce à notre cours sur les expressions régulières en Python.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name RLIKE 'Susann[a-e]'

4. Les ‘~~’ opérateur

Dans PostgreSQL, ‘~~’ est complètement synonyme de LIKE. Il existe également des équivalents de ILIKE, NOT LIKE, et NOT ILIKE.

Opérateur

Equivalent

~~

LIKE

~~*

ILIKE

!~~

NOT LIKE

!~~*

NOT ILIKE

Utilisez SQL LIKE en toute confiance

La maîtrise des fonctions SQL est essentielle pour réussir dans le domaine de la science des données, et la commande LIKE de SQL ne fait pas exception à la règle. Une bonne maîtrise du langage SQL vous permettra d'accélérer vos progrès en matière d'analyse, alors assurez-vous de bien l'apprendre !

Pour plus de ressources sur SQL, consultez les sites suivants :

Devenez ingénieur en données

Devenez un ingénieur de données grâce à l'apprentissage avancé de Python
Sujets

En savoir plus sur SQL

cours

Introduction to SQL

2 hr
919K
Learn how to create and query relational databases using SQL in just two hours.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

See MoreSee More