Que sont les caractères génériques MySQL?
Les jokers MySQL 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 des WildCards?
Si vous êtes familiarisé avec l'utilisation du SQL, vous pouvez penser que vous pouvez rechercher des données complexes à l'aide des clauses SELECT et WHERE. Alors pourquoi utiliser des jokers?
Avant de répondre à cette question, regardons un exemple. Supposons que le service marketing de la vidéothèque Myflix ait réalisé des promotions marketing dans la ville du Texas et souhaite avoir des commentaires sur le nombre de membres
enregistré depuis le 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, la "clause WHERE" devient complexe. Cependant, l'utilisation de jokers simplifie la requête car nous pouvons utiliser quelque chose de simple comme le script ci-dessous.
SELECT * FROM members WHERE postal_address like '% TX';
En bref, les jokers 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 plus de caractères . Il a la syntaxe de base suivante.
SELECT statements… WHERE fieldname LIKE 'xxx%';
ICI
- «Instruction SELECT…» est la commande SQL SELECT standard.
- "WHERE" est le mot clé utilisé pour appliquer le filtre.
- "LIKE" est l'opérateur de comparaison utilisé en conjonction avec des caractères génériques
- 'xxx' est 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 voulions obtenir tous les films qui ont le mot «code» dans le titre, nous utiliserions le caractère générique de pourcentage pour effectuer une correspondance de motif 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%';
L'exécution du script ci-dessus dans MySQL workbench 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. C'est parce que notre code inclut n'importe quel nombre de caractères au début puis correspond au modèle "code" suivi par n'importe quel nombre de caractères à la fin.
Modifions maintenant notre script ci-dessus pour inclure le caractère générique de pourcentage au début des critères de recherche uniquement.
SELECT * FROM movies WHERE title LIKE '%code';
L'exécution du script ci-dessus dans MySQL workbench contre myflixdb nous donne les résultats ci-dessous.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Notez qu'un seul enregistrement a été renvoyé de la base de données. C'est parce que notre code correspond à n'importe quel nombre de caractères au début du titre du film et n'obtient que les enregistrements qui se terminent par le modèle "code".
Déplaçons maintenant le caractère générique de pourcentage à la fin du modèle spécifié à mettre en correspondance. Le script modifié est illustré ci-dessous.
SELECT * FROM movies WHERE title LIKE 'code%';L'exécution du script ci-dessus dans MySQL workbench 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 |
Notez qu'un seul enregistrement a été renvoyé de la base de données. C'est parce que notre code correspond à tous les titres qui commencent par le modèle "code" suivi d'un nombre quelconque de caractères.
_ caractère joker de soulignement
Le caractère générique de soulignement est utilisé pour correspondre exactement à un caractère . Supposons que nous voulions rechercher tous les films sortis dans les années 200x où x est exactement un caractère qui pourrait avoir n'importe quelle valeur. Nous utiliserions le caractère joker de soulignement pour y parvenir. Le script ci-dessous sélectionne tous les films sortis dans l'année "200x"
SELECT * FROM movies WHERE year_released LIKE '200_';
L'exécution du script ci-dessus dans MySQL workbench contre myflixdb nous donne les résultats 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 qui ont 200 suivis par n'importe quel caractère dans le champ année de sortie ont été renvoyés dans notre jeu de résultats. Cela est dû au fait que 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 voulions obtenir des films qui ne sont pas sortis en l'an 200x. Nous utiliserions l'opérateur logique NOT avec le joker de soulignement pour obtenir nos résultats. Voici 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 dans l'année de sortie ont été renvoyés dans notre ensemble de résultats. C'est parce que nous avons utilisé l'opérateur logique NOT dans notre recherche de modèle générique.
Mot-clé d'échappement.
Le mot clé ESCAPE est utilisé pour échapper les caractères de correspondance de modèle tels que le pourcentage (%) et le trait de soulignement (_) s'ils font partie des données.
Supposons que nous voulions 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, le premier en rouge " % " est traité comme faisant partie de la chaîne à rechercher. L'autre est utilisé pour 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 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.