MySQL Tutoriel sur les caractères génériques : J'aime, PAS J'aime, Échapper, ( % ), ( _ )
Quels sont MySQL Des jokers ?
MySQL Wildcards sont des caractères qui aident à rechercher des données correspondant à des critères complexes. Les caractères génériques sont utilisés conjointement avec l'opérateur de comparaison LIKE ou avec l'opérateur de comparaison NOT LIKE.
Pourquoi utiliser les WildCards ?
Si vous êtes habitué à utiliser SQL, vous pensez peut-être que vous pouvez rechercher des données complexes à l'aide des clauses SELECT et WHERE. Alors pourquoi utiliser des Wildcards ?
Avant de répondre à cette question, regardons un exemple. Supposons que le service marketing de la vidéothèque Myflix effectue des promotions marketing dans la ville du Texas et souhaite obtenir des commentaires sur le nombre de membres.
enregistré au Texas, vous pouvez utiliser l'instruction SELECT suivante avec la clause WHERE pour obtenir les informations souhaitées.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Comme vous pouvez le voir dans la requête ci-dessus, le « clause O» devient complexe. Cependant, l'utilisation de caractères génériques simplifie la requête car nous pouvons utiliser quelque chose de simple comme le script présenté ci-dessous.
SELECT * FROM members WHERE postal_address like '% TX';
En bref, les caractères génériques nous permettent de développer des moteurs de recherche puissants dans nos applications basées sur les données.
Types de caractères génériques
% le pourcentage
% le caractère de pourcentage est utilisé pour spécifier un modèle de zéro (0) ou plusieurs caractères. Il a la syntaxe de base suivante.
SELECT statements... WHERE fieldname LIKE 'xxx%';
ICI
- "Instruction SELECT… » est la commande SQL SELECT standard.
- « OÙ » est le mot clé utilisé pour appliquer le filtre.
- "LIKE" est l'opérateur de comparaison utilisé conjointement avec les caractères génériques
- « xxx » correspond à n'importe quel modèle de départ spécifié, tel qu'un seul caractère ou plus, et « % » correspond à n'importe quel nombre de caractères commençant à zéro (0).
Pour apprécier pleinement la déclaration ci-dessus, regardons un exemple pratique
Supposons que nous souhaitions obtenir tous les films dont le titre contient le mot « code », nous utiliserions le caractère générique de pourcentage pour effectuer une correspondance de modèle des deux côtés du mot « code ». Vous trouverez ci-dessous l'instruction SQL qui peut être utilisée pour obtenir les résultats souhaités.
SELECT * FROM movies WHERE title LIKE '%code%';
Exécuter le script ci-dessus dans MySQL établi contre myflixdb nous donne les résultats ci-dessous.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Notez que même si le mot clé de recherche « code » apparaît au début ou à la fin du titre, il est toujours renvoyé dans notre jeu de résultats. En effet, notre code comprend n'importe quel nombre de caractères au début, puis correspond au modèle « code » suivi d'un nombre quelconque de caractères à la fin.
Modifions maintenant notre script ci-dessus pour inclure le caractère générique de pourcentage uniquement au début des critères de recherche.
SELECT * FROM movies WHERE title LIKE '%code';
Exécuter le script ci-dessus dans MySQL workbench contre myflixdb nous donne les résultats présentés ci-dessous.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Notez qu'un seul enregistrement a été renvoyé par la base de données. En effet, notre code correspond à n'importe quel nombre de caractères au début du titre du film et n'obtient que les enregistrements se terminant par le modèle « code ».
Déplaçons maintenant le caractère générique de pourcentage à la fin du modèle spécifié à faire correspondre. Le script modifié est présenté ci-dessous.
SELECT * FROM movies WHERE title LIKE 'code%';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Notez qu'un seul enregistrement a été renvoyé par la base de données. En effet, notre code correspond à tous les titres commençant par le modèle « code » suivi d'un nombre quelconque de caractères.
_ caractère générique de soulignement
Le caractère générique de soulignement est utilisé pour correspond exactement à un caractère. Supposons que nous souhaitions rechercher tous les films sortis au cours des années 200x, où x est exactement un caractère pouvant avoir n'importe quelle valeur. Nous utiliserions le caractère générique de soulignement pour y parvenir. Le script ci-dessous sélectionne tous les films sortis au cours de l’année « 200x »
SELECT * FROM movies WHERE year_released LIKE '200_';
Exécuter le script ci-dessus dans MySQL workbench contre myflixdb nous donne les résultats présentés ci-dessous.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Notez que seuls les films comportant 200 suivis par n'importe quel personnage au cours de l'année de sortie ont été renvoyés dans notre ensemble de résultats. En effet, le caractère générique de soulignement correspond au modèle 200 suivi d'un seul caractère.
Pas comme
L'opérateur logique NOT peut être utilisé avec les caractères génériques pour renvoyer des lignes qui ne correspondent pas au modèle spécifié.
Supposons que nous souhaitions obtenir des films qui ne sont pas sortis au cours de l'année 200x. Nous utiliserions l'opérateur logique NOT avec le caractère générique de soulignement pour obtenir nos résultats. Vous trouverez ci-dessous le script qui fait cela.
SELECT * FROM movies WHERE year_released NOT LIKE '200_';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
8 | Underworld-Awakeninh | Michahel Eal | 2012 | 6 |
Notez que seuls les films qui ne commencent pas par 200 au cours de l'année de sortie ont été renvoyés dans notre ensemble de résultats. En effet, nous avons utilisé l'opérateur logique NOT dans notre recherche de modèles génériques.
Mot-clé d'échappement
Le mot clé ESCAPE est utilisé pour caractères correspondant au modèle d'échappement tels que le pourcentage (%) et le trait de soulignement (_) s'ils font partie des données.
Supposons que nous souhaitions vérifier la chaîne « 67 % » que nous pouvons utiliser ;
LIKE '67#%%' ESCAPE '#';
Si nous voulons rechercher le film « 67% Guilty », nous pouvons utiliser le script ci-dessous pour le faire.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Notez le double «%%" dans la clause LIKE, la première en rouge "%" est traité comme faisant partie de la chaîne à rechercher. L'autre est utilisé pour faire correspondre n'importe quel nombre de caractères qui suivent.
La même requête fonctionnera également si nous utilisons quelque chose comme
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Résumé
- Like & Wildcards sont des outils puissants qui aident à rechercher des données correspondant à des modèles complexes.
- Il existe un certain nombre de caractères génériques qui incluent le pourcentage, le trait de soulignement et la liste de caractères (non pris en charge par MySQL ) entre autres
- Le caractère générique de pourcentage est utilisé pour faire correspondre n'importe quel nombre de caractères à partir de zéro (0) et plus.
- Le caractère générique de soulignement est utilisé pour correspondre exactement à un caractère.