Outils pour utilisateurs

Outils du site


cours:informatique:dev:db:postgres:fondamentaux_postgresql:245_like

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

cours:informatique:dev:db:postgres:fondamentaux_postgresql:245_like [2025/04/06 11:56] – créée yoanncours:informatique:dev:db:postgres:fondamentaux_postgresql:245_like [2025/04/09 21:11] (Version actuelle) yoann
Ligne 1: Ligne 1:
 {{tag>tutotriel sql postgresql db database}} {{tag>tutotriel sql postgresql db database}}
  
-:TODO: 
  
 ====== PostgreSQL LIKE ====== ====== PostgreSQL LIKE ======
  
 Notes et traduction du tutoriel [[https://neon.tech/postgresql/tutorial|PostgreSQL Tutorial]] Notes et traduction du tutoriel [[https://neon.tech/postgresql/tutorial|PostgreSQL Tutorial]]
 +
 +On utilise l'opérateur ''LIKE'' avec un motif pour retrouver une valeur pas totalement connue  :
 +<code sql>
 +-- Retrouver les enregistrement dont le prénom commence par "Jen"
 +SELECT
 +  first_name,
 +  last_name
 +FROM
 +  customer
 +WHERE
 +  first_name LIKE 'Jen%';
 +</code>
 +
 +La clause ''WHERE'' de la requête contient une expression composée de la la valeur de ''first_name'', de l'opérateur ''LIKE'' et d'une chaîne littérale contenant un symbole "%". La chaine 'Jen%' est appelée **motif** (pattern).
 +
 +La requête retourne les enregistrements pour lesquels la valeur de ''first_name'' commence par la chaine "Jen" suivie de n'importe quel caractère. Cette technique est désigner correspondance au motif (patterm matching).
 +
 +On construit un **motif** en combinant des valeurs littérales avec des caractères génériques et en utilisant l'opérateur ''LIKE'' ou ''NOT LIKE''.
 +
 +PosgreSQL propose deux metacaractères génériques :
 +  * le caractère pourcent ''%'' correspond à une séquence de caractères quelconques ;
 +  * Le caractère blanc souligné ''_'' correspond à un seul caractère quelconque.
 +
 +La syntaxe élémentaire de LIKE est donc :
 +<code sql>
 +value LIKE pattern
 +</code>
 +
 +L'opérateur ''LIKE'' retourne vrai si la valeur correspond au motif. On peut utiliser l'opérateur ''NOT LIKE'' pour inverser la correspondance.
 +
 +<code sql>
 +-- Sélectionne les clients dont le prénom contiennent "er"
 +SELECT
 +  first_name,
 +  last_name
 +FROM
 +  customer
 +WHERE
 +  first_name LIKE '%er%'
 +ORDER BY
 +  first_name;
 +
 +-- Sélectionner les clients dont le prénom ne commence pas par "Jen"
 +SELECT
 +  first_name,
 +  last_name
 +FROM
 +  customer
 +WHERE
 +  first_name NOT LIKE 'Jen%'
 +ORDER BY
 +  first_name;
 +</code>
 +
 +
 +===== L'opérateur ILIKE =====
 +
 +L'opérateur ILIKE est insensible à la chasse de caractères :
 +
 +<code sql>
 +SELECT
 +  first_name,
 +  last_name
 +FROM
 +  customer
 +WHERE
 +  first_name ILIKE 'BAR%';
 +</code>
 +
 +Dans cet exemple le motif ''BAR%'' pourra correspondre à toute chaîne commençant par "BAR","Bar", "BaR","bAr" etc. Ce que ne fera pas l'opérateur ''LIKE''.
 +
 +PostgreSQL fournit également des opérateurs qui reproduisent les fonctionnalités de LIKE / ILIKE :
 +
 +^ Opérateur ^ Equivalent |
 +^ ~~        | LIKE       |
 +^ ~~*       | ILIKE      |
 +^ !~~       | NOT LIKE   |
 +^ !~~*      | NOT ILIKE  |
 +
 +<code sql>
 +SELECT
 +  first_name,
 +  last_name
 +FROM
 +  customer
 +WHERE
 +  first_name ~~ 'Dar%'
 +ORDER BY
 +  first_name;
 +</code>
 +
 +
 +===== Échappement des méta-caractères =====
 +
 +Parfois les données peuvent contenir les méta-caractères utilisés par LIKE pour décrire le motif ''%'' ou ''_''. Pour informer l'opérateur LIKE / ILIKE que certains caractères ne doivent pas être interprétés, il faut introduire un caractère d'échappement :
 +
 +<code sql>
 +-- syntaxe
 +string LIKE pattern ESCAPE escape_character;
 +
 +-- exemple
 +message LIKE '%10$%%' ESCAPE '$';
 +</code>
 +
 +Dans l'exemple ci-dessus le motif décrit toute chaîne contenant les caractères "10%".
 +
 +Dans ce motif :
 +<code>'%10$%%'</code>
 +Le premier et le dernier ''%'' est interprété comme caractère générique alors que le ''%'' placé après le caractère d'échappement ''$'' est un caractère régulier.
  
  
 ===== Résumé ===== ===== Résumé =====
  
 +  * Utiliser l'opérateur LIKE pour trouver des correspondance avec un motif ;
 +  * Utiliser l'opérateur NOT LIKE pour inverser la correspondance ;
 +  * Utiliser le caractère générique ''%'' pour désigner 0 ou plusieurs caractères quelconques ;
 +  * Utiliser le caractère générique ''_'' pour désigner un caractère quelconque ;
 +  * Utiliser l'option ''ESCAPE'' et spécifier un caractère d'échappement si le motif doit inclure un caractère générique à ne pas interpréter comme tel ;
 +  * Utiliser ILIKE pour produire des motifs non sensibles à la chasse de caractère.
  
  
cours/informatique/dev/db/postgres/fondamentaux_postgresql/245_like.txt · Dernière modification : 2025/04/09 21:11 de yoann