Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

PostgreSQL ILIKE

L'opérateur ILIKE de PostgreSQL est une version insensible à la casse de l'opérateur LIKE, utilisé pour la recherche de motifs dans les requêtes SQL. Il vous permet de rechercher un motif spécifié dans une chaîne de caractères, en ignorant les distinctions de majuscules et de minuscules. Notez que ILIKE est spécifique à PostgreSQL et peut ne pas être disponible dans d'autres environnements SQL.

Utilisation

L'opérateur ILIKE est utile lorsque vous devez effectuer des comparaisons de chaînes de caractères sans tenir compte des majuscules et des minuscules. Il est souvent utilisé dans les clauses WHERE pour filtrer les résultats sur la base d'un modèle, quel que soit le cas.

SELECT column1, column2, ...
FROM table_name
WHERE column_name ILIKE pattern;

Dans cette syntaxe, column_name ILIKE pattern spécifie la colonne à rechercher et le motif à faire correspondre, la recherche étant insensible à la casse. Sachez que les résultats peuvent varier en fonction des codages de caractères et des collations, en particulier dans les bases de données multilingues.

Exemples

1. Correspondance de base insensible à la casse

SELECT * 
FROM employees
WHERE first_name ILIKE 'john';

Cet exemple permet d'extraire du tableau employees tous les tableaux dont la colonne first_name correspond à "john" en respectant la casse, par exemple "John", "john" ou "JOHN".

2. Utilisation de caractères génériques

SELECT * 
FROM products
WHERE product_name ILIKE '%apple%';

Ici, la requête recherche toute occurrence de "apple" dans la colonne product_name, quelle que soit la casse, ce qui permet d'obtenir des résultats tels que "Green Apple", "apple" ou "APPLE pie".

3. Correspondance de motifs complexes

SELECT * 
FROM orders
WHERE order_description ILIKE 'order #%_';

Cet exemple utilise les caractères génériques "underscore" (_) et "percent" (%) pour correspondre à n'importe quel caractère unique et à n'importe quelle séquence de caractères, respectivement, ce qui permet d'effectuer des correspondances plus complexes tout en ignorant la casse.

Conseils et bonnes pratiques

  • Utilisez-le à bon escient pour des raisons de performance. ILIKE peut être plus lent que LIKE en raison de sa nature insensible à la casse, aussi ne l'utilisez que lorsque c'est nécessaire.
  • Combinez avec des index. Si possible, utilisez des index fonctionnels avec LOWER() pour améliorer les performances sur les grands ensembles de données lorsque vous utilisez ILIKE. Par exemple :
    CREATE INDEX idx_lower_first_name ON employees (LOWER(first_name));
  • Tenez compte des paramètres locaux. Les performances peuvent varier en fonction des paramètres linguistiques et de l'encodage des caractères.
  • Optimisez l'utilisation du modèle. Utilisez des modèles spécifiques pour réduire l'étendue de la recherche et améliorer la vitesse d'interrogation. Dans la mesure du possible, évitez de commencer les motifs par des caractères génériques.
  • Pensez à utiliser le module citext. Pour les applications nécessitant une comparaison fréquente de textes insensibles à la casse, le module citext fournit un type de texte insensible à la casse.
  • Considérations sur la version. Bien qu'il n'y ait pas de différences majeures dans le comportement de ILIKE entre les versions de PostgreSQL, vérifiez toujours les notes de version pour les mises à jour mineures ou les corrections de bogues.