SQL - Opérateur LIKE

Bonjour, les passionnés de SQL en herbe ! Aujourd'hui, nous allons plonger dans un des opérateurs les plus utiles et polyvalents de SQL : l'opérateur LIKE. En tant que votre professeur de sciences informatiques de quartier, je suis excité de vous guider dans cette aventure. Alors, prenez votre boisson favorite, installez-vous confortablement, et partons ensemble dans cette aventure SQL !

SQL - LIKE Operator

L'Opérateur LIKE en SQL

L'opérateur LIKE est un outil puissant en SQL qui nous permet de rechercher des motifs spécifiques dans nos données. C'est comme avoir une loupe super-intelligente qui peut repérer exactement ce que nous cherchons dans notre base de données.

Imaginez que vous cherchez un livre dans une grande bibliothèque. Vous ne vous souvenez peut-être pas du titre exact, mais vous savez qu'il contient le mot "aventure". L'opérateur LIKE est votre ami bibliothécaire qui peut vous aider à trouver tous les livres avec "aventure" dans leurs titres.

La syntaxe de base de l'opérateur LIKE est :

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE motif;

Mais qu'est-ce que ce "motif" dont nous parlons ? Eh bien, c'est là que notre下一个 sujet entre en jeu...

Qu'est-ce que les caractères de substitution ?

Les caractères de substitution sont des caractères spéciaux qui peuvent représenter un ou plusieurs caractères dans un motif de recherche. Ils sont comme les jokers dans un jeu de cartes - ils peuvent remplacer n'importe quelle autre carte. En SQL, nous utilisons les caractères de substitution avec l'opérateur LIKE pour créer des motifs de recherche flexibles.

Les deux principaux caractères de substitution utilisés avec LIKE sont :

  1. % (signe de pourcentage)
  2. _ (tiret bas)

Explorons chacun de ces caractères en détail.

Le caractère de substitution '%'

Le caractère '%' représente zéro, un ou plusieurs caractères. C'est le caractère le plus polyvalent et est souvent utilisé lorsque vous n'êtes pas sûr de la position exacte ou de la longueur du motif que vous cherchez.

Voici quelques exemples :

-- Trouver tous les clients dont les noms commencent par 'A'
SELECT * FROM Customers WHERE CustomerName LIKE 'A%';

-- Trouver tous les produits qui se terminent par 'phone'
SELECT * FROM Products WHERE ProductName LIKE '%phone';

-- Trouver toutes les commandes avec 'book' n'importe où dans le nom du produit
SELECT * FROM Orders WHERE ProductName LIKE '%book%';

Dans le premier exemple, nous cherchons tous les clients dont les noms commencent par 'A', suivis de n'importe quel nombre de caractères. Cela correspondrait à des noms comme "Alex", "Anna", ou même "A very long name".

Le deuxième exemple recherche des produits se terminant par 'phone', ce qui pourrait correspondre à "iPhone", "Smartphone", ou "Headphone".

Le dernier exemple trouve toute commande où le nom du produit contient 'book' n'importe où, donc il correspondrait à "Bookshelf", "Notebook", ou "Book of Spells".

Le caractère de substitution '_'

Le caractère '_' représente un seul caractère. Il est comme un placeholder pour exactement un caractère dans le motif.

Regardons quelques exemples :

-- Trouver tous les clients dont les noms font exactement 4 caractères de long
SELECT * FROM Customers WHERE CustomerName LIKE '____';

-- Trouver tous les produits qui commencent par 'A' et font 5 caractères de long
SELECT * FROM Products WHERE ProductName LIKE 'A____';

-- Trouver toutes les commandes où le second caractère de l'ID de commande est '3'
SELECT * FROM Orders WHERE OrderID LIKE '_3%';

Dans le premier exemple, nous cherchons des noms de clients qui font exactement 4 caractères de long. Cela correspondrait à des noms comme "John" ou "Mary", mais pas "Alexander" ou "Bob".

Le deuxième exemple recherche des noms de produits de 5 lettres commençant par 'A'. Il correspondrait à "Apple" ou "Audio", mais pas "Apricot" ou "A4 paper".

Le dernier exemple trouve des commandes où le second caractère de l'ID de commande est '3'. Cela pourrait correspondre à des IDs comme "13456", "23789", ou toute autre combinaison tant que le second caractère est '3'.

Opérateur LIKE avec OR

Parfois, nous voulons rechercher plusieurs motifs à la fois. C'est là que l'opérateur OR devient utile. Nous pouvons le combiner avec LIKE pour rechercher différents motifs dans la même requête.

Voici un exemple :

-- Trouver tous les clients dont les noms commencent par 'A' ou se terminent par 's'
SELECT * FROM Customers
WHERE CustomerName LIKE 'A%' OR CustomerName LIKE '%s';

Cette requête renverra des clients comme "Alice", "Andreas", "Boris", ou "Charles". Elle correspond aux noms qui commencent par 'A' ou se terminent par 's' (ou les deux).

Opérateur NOT avec la condition LIKE

Que faire si nous voulons trouver tout ce qui ne correspond pas à un certain motif ? C'est là que l'opérateur NOT entre en jeu. Nous pouvons utiliser NOT LIKE pour exclure certains motifs de notre recherche.

Voici un exemple :

-- Trouver tous les produits qui ne commencent pas par 'A'
SELECT * FROM Products
WHERE ProductName NOT LIKE 'A%';

Cette requête renverra tous les produits sauf ceux qui commencent par 'A'. Ainsi, elle inclurait "Banana", "Cherry", "Dell Laptop", mais pas "Apple" ou "Acer Monitor".

Caractères d'échappement avec l'opérateur LIKE

Parfois, nous pourrions vouloir rechercher des motifs qui incluent les caractères de substitution eux-mêmes. Par exemple, que faire si nous voulons trouver des produits avec '%' dans leur nom ? Nous utilisons le caractère d'échappement pour indiquer que nous voulons traiter ces caractères spéciaux comme des caractères normaux.

Par défaut, le caractère d'échappement en SQL est le backslash (). Voici comment nous l'utilisons :

-- Trouver des produits avec '%' dans leur nom
SELECT * FROM Products
WHERE ProductName LIKE '%\%%';

-- Trouver des produits avec '_' dans leur nom
SELECT * FROM Products
WHERE ProductName LIKE '%\_%';

La première requête correspondrait à des noms de produits comme "50% off", "100% cotton", etc. La seconde correspondrait à des noms comme "A_B", "C_D", etc.

Utilisations de l'Opérateur LIKE en SQL

L'opérateur LIKE a de nombreuses applications pratiques dans les requêtes de base de données. Voici un tableau résumant quelques utilisations courantes :

Cas d'Utilisation Exemple de Requête
Trouver des correspondances partielles SELECT * FROM Customers WHERE CustomerName LIKE '%son%';
Rechercher des formats spécifiques SELECT * FROM Orders WHERE OrderID LIKE 'ORD_____';
Filtrer en fonction des caractères de début/fin SELECT * FROM Products WHERE ProductName LIKE 'A%' OR ProductName LIKE '%z';
Exclure certains motifs SELECT * FROM Employees WHERE EmployeeName NOT LIKE 'John%';
Rechercher des caractères spéciaux SELECT * FROM Products WHERE ProductName LIKE '%\%%';

Rappelez-vous, l'opérateur LIKE est insensible à la casse dans la plupart des implémentations SQL. Cela signifie que 'a%' correspondra à 'Apple', 'apple', et 'APPLE'.

En conclusion, l'opérateur LIKE est un outil puissant dans votre boîte à outils SQL. Il permet une correspondance flexible et puissante des chaînes, ce qui est crucial dans de nombreuses tâches d'analyse et de récupération de données. Pratiquez son utilisation avec différents caractères de substitution et combinaisons, et vous deviendrez rapidement un pro !

Bonne recherche, futurs maîtres SQL !

Credits: Image by storyset