mysql like tutorial with syntax
Ce tutoriel explique la correspondance de modèles à l'aide de l'opérateur MySQL LIKE:
La correspondance de modèles est une fonctionnalité importante dans presque tous les langages de programmation tels que - Java / C # / Python, etc. qui exploitent principalement l'utilisation d'expressions régulières pour la correspondance de modèles avec une entrée de chaîne donnée.
MySQL fournit un opérateur facile à utiliser appelé LIKE, qui pourrait être utilisé pour faire correspondre les valeurs String avec des modèles spécifiés et sont utiles pour interroger de grands ensembles de données.
Ce que vous apprendrez:
MySQL COMME
Syntaxe:
L'opérateur LIKE est utilisé avec la clause WHERE dans une requête SELECT.
Dans une requête simple, la syntaxe ressemble à celle ci-dessous.
SELECT {column_names} (*) FROM {table_name} WHERE {column_with_string_value} LIKE {match_pattern}
Les différents composants de cette syntaxe sont expliqués comme suit:
- {column_names}: Ce sont les noms de colonne à afficher en tant que sortie de la requête SELECT. Ces valeurs peuvent être * pour sélectionner toutes les colonnes ou des noms séparés par des virgules de colonnes individuelles.
- {nom de la table}: Il s'agit du nom de la table dans laquelle la requête doit être exécutée.
- {column_with_string_value}: Il s'agit de la colonne dont les valeurs doivent être exécutées par rapport au modèle spécifié. Veuillez noter que toute comparaison est effectuée sur une colonne qui peut être convertie en String.
- {match_pattern}: Il s'agit de l'expression de correspondance avec laquelle les valeurs de colonne doivent être comparées. Un échantillon de modèles de correspondance peut être - ' SM% ». Cela correspondrait à toutes les valeurs de colonne commençant par SM. Exemple: SMART, SMELL, SMOKE, etc.
Semblable à cette requête, l'opérateur LIKE peut être utilisé même avec des requêtes complexes avec JOINS, etc., car LIKE n'est qu'un opérateur de comparaison et peut être utilisé partout où la comparaison de valeurs de colonne est possible.
Noter: Semblable à LIKE, nous pouvons également utiliser sa variante annulée, qui est «NOT LIKE». Donc, dans ce cas, au lieu de renvoyer les résultats correspondants, les requêtes avec l’opérateur ‘NOT LIKE’ renverront des résultats qui ne correspondent pas.
Modèles de correspondance MySQL
L'opérateur LIKE peut être utilisé avec 2 types de motifs. Ceux-ci sont inscrits dans le tableau ci-dessous:
Modèle | |
---|---|
% (Pourcentage) | Correspond à n'importe quel nombre de caractères (y compris aucun caractère) |
_ (Souligner) | Correspond à un seul caractère |
Nous allons maintenant voir quelques exemples utilisant les deux modèles.
% De motif de correspondance
Le motif% est utilisé lorsque vous souhaitez faire correspondre 0 ou plusieurs caractères après ou avant son placement.
Par exemple: si vous souhaitez faire correspondre une chaîne 'it' à partir d'une colonne comportant des noms d'employés. Supposons qu'il y ait des noms comme - Amit, Anchit, Arpit, Nikita, Smith, etc. Nous pouvons voir que tous les noms ont la sous-chaîne «it». Mais leur positionnement est différent.
Supposons que le nom de la colonne soit noms et le nom de la table est noms_étudiants.
Utilisez les exemples de scripts de création de données suivants pour remplir la base de données:
CREATE TABLE student_names (name VARCHAR(100)); INSERT INTO student_names VALUES('Amit'),('Ankit'),('Smith'),('Nikita'),('Mohit');
Voyons comment nous pouvons utiliser le modèle% Match.
SELECT * FROM student_names WHERE name LIKE '%it%'
Production:
Nom |
---|
Amit |
Ankit |
Forgeron |
Nikita |
Mohit |
Maintenant, ce que cela signifie, c'est qu'il peut correspondre à une chaîne qui a la sous-chaîne «it» à n'importe quel endroit et qu'il peut y avoir n'importe quel nombre de caractères avant et après la correspondance. Vous pouvez voir que tous les noms correspondants sont renvoyés en sortie.
Réécrivez la requête pour ne faire correspondre que les noms qui se terminent par la sous-chaîne «it».
SELECT * FROM student_names WHERE name LIKE '%it'
Donc, ici, nous avons supprimé le signe «%» à la fin et avons placé la chaîne «it» à la fin. Ce modèle autoriserait n'importe quel nombre de caractères avant «it», mais la chaîne devrait se terminer par la sous-chaîne «it».
Sortie de la requête ci-dessus:
Nom |
---|
Amit |
Ankit |
Mohit |
Noter: Il est important de noter ici que le modèle mentionné en utilisant le caractère «%» est insensible à la casse. Ainsi, pour l'exemple ci-dessus, au lieu de «% it», nous aurions pu utiliser «% IT» ou «% It», la sortie serait restée la même.
_Modèle de correspondance
Voyons maintenant comment nous pouvons utiliser le modèle de correspondance «_». Nous savons que «_» autorise exactement un caractère.
Supposons que nous voulions interroger tous les noms de 5 lettres de la même table (student_names).
Pour utiliser la correspondance de motifs «_» dans ce cas, nous avons spécifié cinq _ (soulignements) avec le motif LIKE qui correspondront uniquement aux noms de 5 caractères.
SELECT * FROM student_names WHERE name LIKE '_____'
Production:
Nom |
---|
Ankit |
Mohit |
Forgeron |
Prenons un autre exemple. Supposons que nous voulions trouver les 5 noms de lettres qui se terminent par la sous-chaîne «it»
SELECT * FROM student_names WHERE name LIKE '___it'
Ici, nous avons utilisé 3 «_» (traits de soulignement) et la sous-chaîne réelle qui doit être mise en correspondance.
Production:
Nom |
---|
Ankit |
Mohit |
Forgeron |
Combiner% et _ Pattern Matcher
Dans cette section, nous allons discuter de la manière dont nous pouvons faire correspondre les correspondances de modèle% et _ ensemble.
en quoi java est-il différent de c ++
Supposons que nous voulions trouver tous les noms qui ont une sous-chaîne «it» et qui peuvent avoir exactement 2 caractères après le mot «it»
SELECT * FROM student_names WHERE name LIKE '%it_'
Ici, nous avons combiné les modèles de correspondance% et _ pour trouver la correspondance exacte.
Production:
Nom |
---|
Forgeron |
Nikita |
Utiliser NOT LIKE
NOT LIKE est la négation exacte de ce que l'opérateur LIKE renvoie. c'est-à-dire qu'il renverra tous les enregistrements / lignes qui ne correspondent pas à l'expression de correspondance de modèle.
Exemple: Supposons que nous voulions trouver tous les noms ne comportant pas 4 caractères.
SELECT * FROM student_names WHERE name NOT LIKE '____'
Production:
Nom |
---|
Ankit |
Forgeron |
Nikita |
Mohit |
Vous pouvez voir dans la sortie ci-dessus, il ne renvoie que les noms qui ne comportent pas 4 caractères.
Utilisation de MySQL LIKE avec le caractère ESCAPE
Nous verrons ici comment utiliser les caractères ESCAPE avec le pattern matcher.
Supposons que dans une situation hypothétique, nous ayons des noms qui contiennent en fait des caractères% et _ et que nous voulons trouver ces noms, alors nous devons réellement faire correspondre% & _. Ceci peut être réalisé en utilisant un caractère d'échappement.
Noter: La valeur par défaut du caractère d'échappement est «» (barre oblique inverse)
Ajoutez des données aux tables student_names qui contiennent des noms avec des caractères% et _.
INSERT INTO student_names VALUES('Darre%n'),('Julia_Roberts'),('Dane_Sherman%');
Voici quelques exemples pour mieux comprendre cela.
#1) Trouvez tous les noms qui ont un signe%.
SELECT * FROM student_names WHERE name LIKE '%\%%'
Production:
Nom |
---|
Darre% n |
Dane_Sherman% |
#deux) Rechercher tous les noms qui ont un signe _
SELECT * FROM student_names WHERE name LIKE '%\_%'
Production:
Nom |
---|
Julia Robert |
Dane_Sherman% |
Dans les deux exemples ci-dessus, vous pouvez voir que nous avons utilisé un caractère d'échappement pour mentionner les caractères% et _ - c'est-à-dire que pour faire correspondre un caractère% lui-même, nous avons utilisé un caractère d'échappement avant le signe% - c'est-à-dire comme «\%»
Utiliser un personnage d'évasion de votre choix
Essayons maintenant d'étendre l'exemple précédent.
MySQL vous permet de spécifier votre propre caractère ESCAPE que MySQL doit utiliser lors de l'exécution de la recherche de correspondance de modèle.
Essayons de mettre à jour le caractère d'échappement en «!» Au lieu de la valeur par défaut «»
SELECT * FROM student_names WHERE name LIKE '%!_%' ESCAPE '!'
Production:
Nom |
---|
Julia Robert |
Dane_Sherman% |
Dans l'exemple ci-dessus, nous avons remplacé le caractère d'échappement par «!» Et utilisé la même chose dans la correspondance de modèles «%! _%» - où nous voulons faire correspondre un caractère «_» dans le nom.
Questions fréquemment posées
Q # 1) Que signifie %% en SQL?
Répondre: «%%» ne correspondra à rien de précis. Son équivalent à avoir juste 1% de caractère. Si vous voulez faire correspondre le caractère «%» lui-même dans la valeur de la colonne, vous pouvez l’utiliser avec un caractère d’échappement dont la valeur par défaut est ’.
Supposons que vous vouliez faire correspondre une valeur de colonne ayant un caractère «%», vous pouvez écrire la correspondance de modèle comme - LIKE «% %%» (notez une barre oblique inverse supplémentaire avant le caractère de pourcentage du milieu (%).
Q # 2) Qu'est-ce qu'un joker dans MySQL?
Répondre: MySQL LIKE Operator fonctionne avec 2 caractères génériques dans MySQL pour obtenir différentes méthodes de correspondance de modèles.
Ceux-ci sont:
où puis-je trouver la clé de sécurité
- % - Cela correspondrait à n'importe quel nombre de caractères (y compris zéro)
- _ - Cela correspondrait exactement à un caractère
Q # 3) Comment écrire une requête LIKE dans MySQL?
Répondre: LIKE est un opérateur simple généralement utilisé avec la clause WHERE dans une requête SELECT. Il est utilisé pour faire correspondre les valeurs de colonne avec le modèle spécifié.
Exemple: Supposons qu'il existe une table contenant des détails sur les employés et une colonne nommée adresse qui contient le numéro de maison, le nom de la rue, etc. Vous souhaitez connaître tous les employés dont l'adresse est définie comme 'Oxford Lane'.
Nous pouvons utiliser l'opérateur LIKE pour écrire une telle requête.
SELECT * FROM employee_details WHERE address LIKE '%Oxford Lane%'
Veuillez noter que les modèles String sont insensible à la casse tout en étant mis en correspondance avec l'expression de correspondance spécifiée.
Q # 4) Comment spécifier un caractère d'échappement différent avec l'opérateur LIKE?
Répondre: MySQL fournit un moyen de spécifier un caractère d'échappement personnalisé qui remplacerait celui par défaut, c'est-à-dire
Voici un exemple qui changerait le caractère d'échappement en «!» Pour l'exécution de la requête.
SELECT * FROM employee_details WHERE address LIKE '%!_%' ESCAPE '!'
Dans la requête ci-dessus, nous avons mentionné «!» Comme caractère d'échappement et utilisé le même dans l'expression de correspondance.
Q # 5) Comment faire correspondre un caractère% ou _ réel en utilisant l'opérateur LIKE?
Répondre: Les caractères comme% et _ sont des caractères génériques spéciaux qui, lorsqu'ils doivent être mis en correspondance dans le cadre de la chaîne, doivent être échappés.
Le caractère d'échappement par défaut est «» et doit être utilisé juste avant de mentionner le caractère générique.
Supposons que nous voulions faire correspondre le caractère «_» à une valeur de colonne donnée, alors nous pouvons écrire l'expression de correspondance comme - AIMER '%\_%'
Conclusion
Dans ce didacticiel, nous avons découvert les différentes manières dont nous pouvons utiliser l'opérateur LIKE (ou la version annulée, c'est-à-dire NOT LIKE).
Nous avons également discuté des caractères génériques pris en charge, c'est-à-dire _ et%, et comment peuvent-ils être échappés s'ils doivent faire partie de la chaîne à rechercher / faire correspondre.
L'opérateur LIKE est une fonctionnalité puissante fournie par MySQL et est généralement utilisé pour filtrer les enregistrements lors de l'interrogation de grands ensembles de données.
lecture recommandée
- Tutoriel MySQL Create View avec des exemples de code
- MySQL UNION - Tutoriel complet avec des exemples d'Union
- Tutoriel MySQL Create Table avec des exemples
- MySQL Insert Into Table - Syntaxe et exemples d'instructions d'insertion
- Syntaxe des commandes Unix Cat, options avec exemples
- Tutoriel C # Regex: Qu'est-ce qu'une expression régulière C #
- Tutoriel C ++ regex: Expressions régulières en C ++ avec des exemples
- Tutoriel Java Regex avec des exemples d'expressions régulières