Retour à la liste des articles Articles
11 minutes de lecture

Comment utiliser LIKE en SQL : Le filtrage SQL

Le filtrage SQL est une fonction très importante et utile. Dans cet article, nous examinons comment vous pouvez l'effectuer en utilisant LIKE en SQL.

La correspondance de motifs SQL est un concept très simple. Il vous permet de rechercher des chaînes et des sous-chaînes et de trouver certains caractères ou groupes de caractères. Outre le langage SQL, cette opération peut être effectuée dans de nombreux autres langages de programmation.

Dans cet article, nous examinerons comment vous pouvez utiliser LIKE en SQL pour rechercher des sous-chaînes. Nous ferons également la distinction entre la correspondance exacte SQL et la correspondance partielle SQL en expliquant comment vous pouvez étendre votre recherche en utilisant des caractères génériques. Enfin, nous préciserons quand vous devez utiliser autre chose que LIKE pour trouver une correspondance.

Si vous souhaitez pratiquer LIKE et d'autres fonctionnalités SQL, consultez notre piste La pratique du SQL. Elle propose plus de 600 exercices SQL interactifs pour vous aider à réviser vos connaissances SQL et à prendre confiance en vos compétences SQL.

Comment utiliser la fonction LIKE en SQL ?

Supposons que vous deviez récupérer des enregistrements en fonction de la présence d'un certain groupe de caractères dans une colonne. Comme vous le savez, en SQL, la clause WHERE filtre les résultats de SELECT. Par elle-même, WHERE trouve des correspondances exactes. Mais que faire si vous avez besoin de trouver quelque chose en utilisant une correspondance partielle ?

Dans ce cas, vous pouvez utiliser LIKE en SQL. Cet opérateur recherche des chaînes ou des sous-chaînes de caractères spécifiques et renvoie tous les enregistrements qui correspondent à ce motif. (D'où le terme de correspondance de motifs SQL.) Vous trouverez ci-dessous la syntaxe de l'opérateur LIKE dans une instruction SELECT:

SELECT   [ column_list |  *  ]   
FROM  table_name
WHERE  column or expression  LIKE  pattern;

Remarquez que le nom de la colonne ou l'expression à rechercher vient avant LIKE

en SQL. Après l'opérateur se trouve le motif à rechercher. Ce modèle peut être du texte pur ou du texte mélangé à un ou plusieurs caractères génériques. Nous expliquerons plus loin l'utilisation des jokers.

Correspondance partielle en SQL : Utilisation de LIKE avec des caractères génériques

Si vous ne connaissez pas le modèle exact que vous recherchez, vous pouvez utiliser des caractères génériques pour vous aider à le trouver. Les caractères génériques sont des symboles textuels qui indiquent le nombre de caractères qui se trouvent à un certain endroit dans la chaîne. La norme SQL ANSI utilise deux caractères génériques, le pourcentage (%) et le trait de soulignement (_), qui sont utilisés de différentes manières. Lorsque vous utilisez des caractères génériques, vous effectuez une correspondance partielle

SQL au lieu d'une correspondance exacte SQL, car vous n'incluez pas une chaîne exacte dans votre requête.
wildcard description
% zero, one, or many characters, including spaces
_ a single character

Regardez la table complète animal qui sera utilisée dans nos requêtes SQL :

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21
22 null

Note : ... .

désigne deux espaces.

Correspondance partielle SQL : le caractère générique pour cent

Comme vous pouvez le voir dans le tableau ci-dessus, le caractère générique pour cent peut être utilisé lorsque vous n'êtes pas sûr du nombre de caractères qui feront partie de votre correspondance. Dans l'exemple ci-dessous, remarquez ce qui se passe lorsque vous utilisez uniquement ce caractère générique avec LIKE en SQL :

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%' ;

Résultat :

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21

Remarque : ... .

désigne deux espaces.

Cette utilisation de la correspondance partielle SQL renvoie tous les noms de la table animal, même ceux qui ne comportent aucun caractère dans la colonne nom. Cela s'explique par le fait que le caractère générique pour cent désigne tout caractère ou aucun caractère

. Même lorsqu'il y a une valeur nulle dans la colonne name, une chaîne vide est renvoyée.

Mais si vous souhaitez renvoyer uniquement les noms d'animaux qui commencent par un "g", vous devez écrire la requête en utilisant un "g" devant le caractère générique pour cent

:
SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'g%' ;

Le résultat de cette opération de correspondance partielle SQL est le suivant :

id name
20 gerenuk

De même, si vous souhaitez sélectionner les noms d'animaux qui se terminent par un "g

", vous devez placer le caractère générique de pourcentage en premier, comme indiqué dans cette requête SQL de correspondance partielle :
SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g';

Résultat :

id name
1 frog
2 dog
15 hedgehog
19 hog

La requête suivante renvoie tous les animaux dont le nom contient un "g". Pour ce faire, utilisez deux caractères génériques de pourcentage et un caractère "g

", comme indiqué ci-dessous.
SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g%';

Résultat :

id name
1 frog
2 dog
5 jaguar
15 hedgehog
18 langur
19 hog
20 gerenuk

Tous ces animaux ont un nom qui contient un "g" quelque part - au début, au milieu ou à la fin.

Maintenant, passons au caractère générique de soulignement.

Correspondance partielle SQL : le caractère générique de soulignement

Le caractère générique de soulignement

représente un seul caractère pour chaque soulignement. Dans cette correspondance partielle SQL, il peut remplacer n'importe quel caractère, mais chaque trait de soulignement est limité à un seul caractère. Regardez l'exemple ci-dessous :
SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '_';

Résultat :

id name

0 ligne

Cette requête n'a pas retourné d'enregistrements car il n'y a pas de noms d'animaux à un seul caractère dans la table.

L'exemple suivant affiche tous les noms qui contiennent exactement cinq caractères. Pour représenter cela, nous devons utiliser cinq caractères de soulignement :

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '_____';

Résultat :

id name
7 panda
10 sheep
11 camel
13 lemur

Si vous utilisez le caractère générique de soulignement à la fin de votre chaîne de correspondance partielle SQL, la requête renverra tous les enregistrements qui correspondent au texte donné plus un caractère supplémentaire

. Nous voyons ci-dessous un exemple :
SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'lio_';

Résultat :

id name
8 lion

Qu'est-ce qui est renvoyé lorsque la requête comporte un caractère de remplacement souligné au milieu de la chaîne ?

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'p_ma';

Résultat :

id name
6 puma

Ce sont tous les animaux dont le nom commence par "p" et se termine par "ma

", avec un seul caractère entre les deux.

Correspondance partielle SQL : Combinaison de caractères génériques

Vous pouvez également utiliser une combinaison de caractères de soulignement et de pourcentages pour votre correspondance de motifs SQL. Regardez l'exemple suivant :

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%ho_';

Résultat :

id name
15 hedgehog
19 hog

Comme vous pouvez le constater, cette requête renvoie les noms qui combinent "ho

" avec un nombre quelconque de caractères devant et un seul caractère après.

Utilisation de LIKE en SQL avec du texte

Nous allons maintenant voir comment utiliser LIKE en SQL avec des chaînes de caractères de type texte et sans caractères génériques. Dans certaines circonstances, vous trouverez peut-être qu'il existe de meilleures options que l'utilisation de LIKE dans le filtrage de motifs SQL. Mais pour l'instant, voyons comment cela fonctionne. Nous commencerons par examiner le tableau complet des noms d'animaux et des numéros d'identification, comme indiqué ci-dessous :

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant. ..
18 langur
19 hog
20 gerenuk
21
22 null

Remarque : . ...

indique deux espaces.

Notez que l'enregistrement où id=21 a une chaîne vide (sans aucun caractère). Le dernier enregistrement a une valeur NULL dans la colonne name.

Maintenant, disons que nous voulons récupérer les enregistrements où le nom de l'animal est "éléphant".

C'est assez simple, comme le montre l'exemple ci-dessous :
SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'elephant';

Résultat :

id name
16 elephant

Dans la table, il y a en fait deux

enregistrements contenant "éléphant". Cependant, le deuxième enregistrement contient deux espaces supplémentaires à la fin du mot, il n'est donc pas renvoyé.

Essayons un autre modèle de texte qui inclut ces deux espaces.

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'elephant  ';

Résultat :

id name
17 elephant. ..

Note : . ...

dénote deux espaces.

Encore une fois, il n'y a qu'un seul enregistrement : "éléphant" avec deux espaces.

Ensuite, supposons que nous utilisions une chaîne de texte concrète et un opérateur d'égalité (=), comme ceci :

SELECT 
  id, 
  name 
FROM animal
WHERE name = 'elephant '  ;

Résultat :

id name
16 elephant

Si vous voulez vérifier si une chaîne de texte est identique à la valeur d'une colonne, vous recherchez une correspondance exacte SQL plutôt qu'une correspondance partielle SQL. Dans ce cas, utilisez un opérateur equals plutôt que LIKE.

Combinaison des opérateurs NOT et LIKE

Vous pouvez également tester les chaînes de caractères qui ne correspondent pas à un modèle. Pour ce faire, nous combinons les opérateurs LIKE et NOT. Il s'agit d'une autre façon d'effectuer le filtrage SQL.

Dans l'exemple ci-dessous, nous voulons trouver tous les noms d'animaux qui ne comportent pas le caractère "a

" :
SELECT 
  id, 
  name 
FROM animal
WHERE name NOT LIKE '%a%';

Résultat :

id name
1 frog
2 dog
4 fox
8 lion
10 sheep
12 monkey
13 lemur
15 hedgehog
19 hog
20 gerenuk
21 camel

Utilisation de LIKE en SQL avec d'autres opérateurs

La clause WHERE peut inclure plus d'une condition. Par conséquent, LIKE et NOT LIKE peuvent être utilisés avec d'autres opérateurs. Voyons un autre exemple :

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g'  OR name LIKE 's%'  ;

Résultat :

id name
1 frog
2 dog
10 sheep
15 hedgehog
19 hog

Il a retourné tous les noms d'animaux qui commencent par un caractère "s" ou se terminent par un caractère "g

".

Utilisation de LIKE en SQL dans d'autres instructions

Jusqu'à présent, nous avons abordé l'utilisation de LIKE en SQL uniquement dans les instructions SELECT. Mais cet opérateur peut être utilisé dans d'autres instructions, telles que UPDATE ou DELETE. Comme vous pouvez le constater, la syntaxe est assez similaire :

UPDATE table 
SET column1 = newValue
WHERE  column2  LIKE  pattern ;
DELETE  FROM  table
WHERE  column  LIKE  pattern ;

Voyons comment nous pouvons utiliser LIKE pour modifier certains noms d'animaux. Vous êtes prêt ?

UPDATE  animal 
SET name='tiger'
WHERE name LIKE '%key%' ;

Il n'y a qu'un seul enregistrement qui correspond à la condition de LIKE %key%: singe. Après cette mise à jour, "tiger" remplacera toutes les instances de "monkey".

Voici le résultat après avoir mis à jour puis sélectionné tous les enregistrements de la table animal.

SELECT * 
FROM  animal ;
id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 tiger
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21
22 null

Remarque : . ...

indique deux espaces.

Ensuite, nous supprimerons tous les enregistrements dont le nom de l'animal commence par un "t

" :
DELETE FROM animal
WHERE name LIKE 't%'  ;

Pour en savoir plus sur le filtrage de motifs SQL

Le filtrage SQL est très utile pour rechercher des sous-chaînes de texte. LIKE et son proche parent NOT LIKE rendent cette opération très facile. Si vous souhaitez en savoir plus sur le filtrage et l'opérateur LIKE, consultez le coursSQL pour les débutants . Il vous montrera comment construire des requêtes à partir de rien, mais il vous présentera également des compétences pratiques comme le filtrage de motifs

.

Si vous avez des connaissances de base en SQL, vous pouvez les rafraîchir avec le cours Exercices Pratiques de SQL qui comporte 88 exercices, allant de tâches simples avec des instructions SELECT FROM à des problèmes plus avancés impliquant des sous-requêtes multiples. Ou essayez notre piste La pratique du SQL avec 5 cours pratiques SQL et plus de 600 exercices. Inscrivez-vous

dès maintenant et gratuitement !