PostgreSQL LIKE
La fonction `LIKE` string de PostgreSQL est utilisée pour faire correspondre des motifs textuels dans les valeurs des colonnes. Il vous permet de rechercher des séquences spécifiques de caractères dans des types de données de type chaîne.
Utilisation
La fonction `LIKE` est couramment utilisée dans les instructions `SELECT` pour filtrer les données sur la base de modèles de texte spécifiques. Elle est particulièrement utile pour trouver des lignes où la valeur d'une colonne correspond à un modèle donné.
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;
Dans cette syntaxe, `nom_de_colonne LIKE motif` vérifie si `nom_de_colonne` correspond au `motif` spécifié, qui peut inclure des caractères génériques comme `%` et `_`.
Exemples
1. Utilisation de base avec % de joker
SELECT *
FROM products
WHERE product_name LIKE 'Apple%';
Cet exemple récupère tous les tableaux de la table `products` où `product_name` commence par "Apple".
2. Correspondance de motifs avec les caractères génériques _
SELECT customer_id, customer_name
FROM customers
WHERE customer_name LIKE 'J_n%';
Cette requête sélectionne les clients dont le `nom_client` commence par "J", a un caractère unique en deuxième position et est suivi de "n".
3. Combinaison de LIKE avec l'opérateur NOT
SELECT order_id, order_date
FROM orders
WHERE order_status NOT LIKE 'Cancelled%';
Cet exemple récupère les commandes du tableau `orders` où `order_status` ne commence pas par "Cancelled".
4. Utilisation de la clause ESCAPE
SELECT comment_id
FROM comments
WHERE comment_text LIKE '100\% sure' ESCAPE '\';
Cette requête recherche les commentaires qui contiennent le texte "100%" littéralement, en utilisant la barre oblique inverse `` pour échapper au caractère ``%`.
Conseils et bonnes pratiques
- Utilisez `%` et `_` à bon escient. Le caractère générique `%` correspond à toute séquence de caractères, tandis que `_` correspond à un seul caractère.
- Optimisez les performances. Soyez prudent avec `%` au début des motifs car cela peut ralentir les performances de la requête. Notez que les index ne sont généralement pas utilisés lorsque le motif commence par un caractère générique.
- Tenez compte de la sensibilité à la casse. Utilisez `ILIKE` pour un filtrage insensible à la casse si nécessaire.
- A combiner avec d'autres conditions. Utilisez `LIKE` avec des conditions `WHERE` supplémentaires pour réduire les résultats de manière efficace.
- Échapper aux caractères spéciaux. Utilisez la clause `ESCAPE` pour rechercher les caractères littéraux `%` ou `_` si nécessaire, comme le montre l'exemple.
- Explorez les alternatives. Envisagez d'utiliser `SIMILAR TO` pour des besoins plus complexes de recherche de motifs, car il supporte les expressions régulières.