PostgreSQL - 5.31 Filtrer des données avec LIKE et les caractères génériques

Le filtre avec le signe égal ne trouve que les valeurs exactes. Pour chercher un texte qui commence par une lettre, qui contient un groupe de lettres ou qui a une longueur précise, on utilise l'opérateur LIKE. Cette leçon montre comment l'écrire avec deux caractères génériques.

Chercher un texte qui commence par une lettre

La requête suivante sélectionne le rôle des acteurs dont le prénom commence par un P. Le signe pourcentage remplace un nombre quelconque de caractères, y compris aucun. La requête se termine par un point-virgule.

SELECT role FROM acteurs WHERE prenom LIKE 'P%';

Le tiret bas pour un caractère exact

Le tiret bas remplace exactement un caractère. Le motif 'Pe_' ne trouve donc que les prénoms de trois lettres commençant par Pe. Le signe pourcentage, lui, accepte n'importe quelle longueur.

SELECT role FROM acteurs WHERE prenom LIKE 'Pe_';

Chercher une lettre au milieu

Le motif '%r%' trouve les prénoms qui contiennent un r, quel que soit le nombre de caractères avant et après. Pour imposer un nombre précis de caractères, on remplace le pourcentage par des tirets bas : '__r_' cherche un r en troisième position, suivi d'un seul caractère.

En résumé

L'opérateur LIKE compare une colonne à un motif. Le pourcentage remplace un nombre quelconque de caractères, et le tiret bas en remplace exactement un. Les deux caractères peuvent être combinés dans un même motif.

Points clés

  • LIKE compare une colonne à un motif au lieu d'une valeur exacte.
  • Le pourcentage remplace zéro, un ou plusieurs caractères.
  • Le tiret bas remplace exactement un caractère.
  • 'P%' trouve les valeurs qui commencent par P.
  • '%r%' trouve les valeurs qui contiennent r.

Questions fréquentes

Pourquoi la recherche 'P_' ne retourne-t-elle aucun résultat ?

Dans la table de la vidéo, aucun prénom ne comporte exactement un seul caractère après le P. Le tiret bas exige un caractère de plus, et il n'en existe pas ici.

Le motif est-il sensible à la casse ?

Dans PostgreSQL, oui. LIKE fait la différence entre majuscules et minuscules, donc 'P%' ne trouve pas un prénom écrit en minuscules.

Peut-on combiner les deux caractères génériques ?

Oui. Par exemple, '%r__' trouve les valeurs contenant un r suivi de exactement deux caractères, avec un nombre quelconque de caractères avant.