Modèles de recherche - LIKE
Parfois, nous pouvons exiger des nuplets de la base de données qui correspondent à certains modèles. Par exemple, nous pouvons souhaiter extraire toutes les colonnes où les n-uplets commencent par la lettre "y" ou par "b" et se terminent par "a", ou même par des motifs de chaîne plus compliqués et restrictifs. C'est ici que la lause LIKE vient nous sauver.
Souvent associée à la clause WHERE en SQL.
Deux types de caractères génériques sont utilisés pour filtrer les résultats:
%
: Utilisé pour faire correspondre zéro, un ou plusieurs caractères. (Longueur variable)_
: Utilisé pour correspondre exactement à un caractère. (Longueur fixe)
Voici les règles utilisées pour la correspondance de modèle avec la clause LIKE:
Modèle | Description |
---|---|
"a%" | Il fait correspondre les chaînes qui commencent par "a" |
"%a" | Il fait correspondre les chaînes qui se terminent par "a" |
"a%t" | Il fait correspondre les chaînes qui commencent par «a» et se terminent par «t». |
"%abc%" | Il fait correspondre les chaînes qui contiennent la sous-chaîne "abc" en n'importe quelle position. |
"_abc%" | Il fait correspondre les chaînes contenant la sous-chaîne "abc" en deuxième position. |
"_a%" | Il fait correspondre les chaînes contenant «a» à la deuxième position. |
"a_%_%" | Il fait correspondre les chaînes qui commencent par "a" et contiennent au moins 2 caractères supplémentaires. |
Exemples
La table échantillon - Employes
+----+---------+-----+---------+ | Id | Nom | Age | Salaire | +----+---------+-----+---------+ | 1 | Ismail | 25 | 6000.00 | | 2 | Mohamed | 30 | 8000.40 | | 3 | Fatima | 29 | 6000.00 | | 4 | Dounia | 31 | 9000.00 | | 5 | Omar | 30 | 7500.00 | | 6 | Mostafa | 32 | 7000.00 | +----+---------+-----+---------+
Exemple 1 :
La requête suivante va chercher tous les employés dont les noms commencent par "Mo"
SELECT * FROM Employes WHERE Nom LIKE "Mo%";
Cela produirait le résultat suivant :
+----+---------+-----+---------+ | Id | Nom | Age | Salaire | +----+---------+-----+---------+ | 2 | Mohamed | 30 | 8000.40 | | 6 | Mostafa | 32 | 7000.00 | +----+---------+-----+---------+
Exemple 2 :
SELECT * FROM Employes WHERE Nom LIKE "%a";
Cela produirait le résultat suivant :
+----+---------+-----+---------+ | Id | Nom | Age | Salaire | +----+---------+-----+---------+ | 3 | Fatima | 29 | 6000.00 | | 4 | Dounia | 31 | 9000.00 | | 6 | Mostafa | 32 | 7000.00 | +----+---------+-----+---------+
Exemple 3 :
SELECT * FROM Employes WHERE Nom LIKE "%m%";
Cela produirait le résultat suivant :
+----+---------+-----+---------+ | Id | Nom | Age | Salaire | +----+---------+-----+---------+ | 1 | Ismail | 25 | 6000.00 | | 2 | Mohamed | 30 | 8000.40 | | 3 | Fatima | 29 | 6000.00 | | 5 | Omar | 30 | 7500.00 | | 6 | Mostafa | 32 | 7000.00 | +----+---------+-----+---------+
Exemple 4 :
SELECT * FROM Employes WHERE Nom LIKE "%m_";
Cela produirait le résultat suivant :
+----+--------+-----+---------+ | Id | Nom | Age | Salaire | +----+--------+-----+---------+ | 3 | Fatima | 29 | 6000.00 | +----+--------+-----+---------+