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 queLIKE
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 utilisezILIKE
. 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 modulecitext
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.