Dans le cours : L'essentiel de SQL
Maîtriser l'opérateur LIKE - Tutoriel SQL
Dans le cours : L'essentiel de SQL
Maîtriser l'opérateur LIKE
Dans la clause WHERE nous pouvons chercher avec des opérateurs de comparaison, par exemple l'égalité. Ici, je cherche tous les contacts qui s'appellent Nguyen. Mais parfois on a besoin de chercher avec un peu plus de souplesse que ça. Par exemple, y a-t-il des gens dont le nom commence par Ng ou des gens dont le nom comporte Ng au début ou à la fin ? Comment peut-on faire ce type de recherche ? En tout cas pas avec l'opérateur =. Il va falloir qu'on change de stratégie. Il y a, dans le langage SQL, un opérateur spécifique qui s'appelle LIKE. C'est un opérateur, ce n'est pas un signe comme le = mais une suite de lettres, mais c'est un opérateur quand même. Et cet opérateur permet, comme son nom l'indique, de chercher quelque chose qui ressemble à. Maintenant, si je fais un nom LIKE Nguyen, je vais trouver Nguyen. Rien de changé. Ce qu'il va falloir que je fasse, à l'intérieur du littéral qui me permet la recherche, c'est utiliser des caractères jokers ou des caractères spéciaux qui seront interprétés par le LIKE comme quelque chose de spécial. Les deux caractères qu'on va utiliser sont le % et le _ . Le _ est souvent nommé le tiret bas. Sous Windows et Linux, sur les claviers azerty, il est aussi nommé tiret du 8 car il est accessible sous la touche du 8. Sur les claviers macOS, il est situé au-dessus du tiret normal. Notons une chose. Ce sont deux caractères qui sont interprétés uniquement lorsqu'on utilise un LIKE. Je vois parfois des gens qui essayent de le mettre dans un IN ou dans un BETWEEN, on pourrait essayer dans une égalité, ça ne fonctionnera pas. C'est uniquement avec un LIKE. Si vous cherchez avec quoi que ce soit d'autre, SQL cherchera le signe % à l'intérieur de la colonne et je doute qu'il y ait quelqu'un qui ait le signe % dans son nom. Maintenant que cela est dit, le % permet de remplacer zéro ou plusieurs caractères, n'importe lesquels, mais je dis bien de zéro à plusieurs caractères. Si je mets Nguyen avec un % ici et que je cherche, je trouve Nguyen quand même. Il n'y a rien après. On aurait remplacé zéro caractère. Si je mets Ng %, je pourrai trouver des gens qui s'appellent Ng tout court ou des gens qui appellent Ng quelque chose. Comme je mets mon % à la fin de la chaîne et qu'au début de la chaîne on commence par Ng, je vais chercher tous les gens qui s'appellent Ng quelque chose. Et il se trouve qu'on dirait qu'il n'y a que Nguyen dans notre base qui corresponde à ce critère. Je peux utiliser plusieurs fois ces signes. Par exemple, je peux mettre un % au début également, je pourrais mettre un % au milieu. Je peux en mettre autant que je veux. Ça ne sert à rien de les dupliquer puisqu'ils représentent zéro ou plusieurs caractères mais en revanche à un endroit, au début et à la fin, ça a du sens. Ici je cherche tous les gens qui ont Ng à l'intérieur du mot. Il se trouve que j'ai mis un N majuscule et que je suis dans MariaDB ou MySQL et que je ne suis pas sensible à la casse mais, dans certains systèmes comme dans Oracle par exemple, vous serez sensible à la casse. Vous ne trouverez pas Duong par exemple parce que le N est exprimé en majuscule mais en fait il est stocké en minuscule. Mais dans MySQL ou MariaDB, ça passe. Vous notez que Ng peut se trouver n'importe où, au début, à la fin, puisqu'on peut avoir zéro caractère ou plusieurs ici, zéro caractère ou plusieurs là. Ensuite, si je veux chercher tous les gens dont le nom se termine par ng, là par convention je vais mettre en minuscules puisque je me doute que ça doit être en minuscules. Je mets simplement un % au début. Voilà tous les gens dont le nom se termine par ng. Et nous avons dit il y a aussi le blanc _. À quoi sert-il ? Lui, il va servir à remplacer un seul caractère. Si je cherche les gens dont le nom se termine par ng mais qui ont systématiquement trois caractères avant, ni plus ni moins, je vais inscrire trois _. De cette façon, je trouve effectivement tous les gens qui ont trois lettres, n'importe lesquelles, mais ensuite ng. Je vais pouvoir aussi mélanger des % et des _ pour chercher la chaîne que je veux voir apparaître. Par exemple, si je mets un %, je vais trouver tous les gens dont le nom se termine par ng mais qui ont au moins trois caractères de plus, au moins trois caractères ou plus puisque je mets un %. Je vais trouver plus de résultats mais j'éviterai les gens qui n'ont que quatre lettres dans leur nom. Voilà comment vous utilisez le LIKE dans une clause WHERE pour faire une recherche avec ce qu'on appelle un pattern de recherche et des caractères spéciaux.
Entraînez-vous tout en suivant la formation avec les fichiers d’exercice.
Téléchargez les fichiers utilisés par l’instructeur pour enseigner le cours. Suivez attentivement et apprenez en regardant, en écoutant et en vous entraînant.
Table des matières
-
-
-
-
-
(Verrouillé)
Filtrer par une clause WHERE2 m 54 s
-
(Verrouillé)
Combiner les prédicats avec des opérateurs booléens4 m 27 s
-
(Verrouillé)
Traiter les NULL dans la recherche3 m 4 s
-
(Verrouillé)
Traiter les NULL avec les fonctions3 m 53 s
-
(Verrouillé)
Travailler avec les opérateurs spéciaux3 m 21 s
-
Maîtriser l'opérateur LIKE4 m 49 s
-
(Verrouillé)
Comprendre les fonctions4 m 32 s
-
(Verrouillé)
Chercher une fonction2 m 49 s
-
(Verrouillé)
Utiliser les fonctions de chaînes de caractères4 m 32 s
-
(Verrouillé)
Pratiquer les fonctions numériques4 m 32 s
-
(Verrouillé)
Apprendre les fonctions temporelles en MariaDB ou MySQL4 m 40 s
-
(Verrouillé)
Manipuler les fonctions de dates dans Oracle3 m 33 s
-
(Verrouillé)
Manipuler les fonctions de dates dans PostgreSQL et Microsoft SQL Server3 m 49 s
-
(Verrouillé)
Défi : Utiliser les requêtes SELECT1 m 33 s
-
(Verrouillé)
Solution : Utiliser les requêtes SELECT5 m 37 s
-
(Verrouillé)
-
-
-
-
-