27th Apr 2022 11 minutes de lecture Comment utiliser LIKE en SQL : Le filtrage SQL Dorota Wdzięczna LIKE correspondance des motifs en SQL opérateur sql Table des matières Comment utiliser la fonction LIKE en SQL ? Correspondance partielle en SQL : Utilisation de LIKE avec des caractères génériques Correspondance partielle SQL : le caractère générique pour cent Correspondance partielle SQL : le caractère générique de soulignement Correspondance partielle SQL : Combinaison de caractères génériques Utilisation de LIKE en SQL avec du texte Combinaison des opérateurs NOT et LIKE Utilisation de LIKE en SQL avec d'autres opérateurs Utilisation de LIKE en SQL dans d'autres instructions Pour en savoir plus sur le filtrage de motifs 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 LIKEen 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 partielleSQL 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 soulignementrepré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. Types de données texte en SQLhttps://t.co/2cWLoe7ONa#sql #LearnSQL #Database - Vertabelo (@Vertabelo) 5 janvier 2017 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 deuxenregistrements 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-vousdès maintenant et gratuitement ! Tags: LIKE correspondance des motifs en SQL opérateur sql