Wat zijn MySQL-jokertekens?
MySQL-jokertekens zijn tekens die helpen bij het zoeken naar gegevens die aan complexe criteria voldoen. Jokertekens worden gebruikt in combinatie met de LIKE-vergelijkingsoperator of met de NOT LIKE-vergelijkingsoperator.
Waarom WildCards gebruiken?
Als u bekend bent met het gebruik van SQL, denkt u misschien dat u naar complexe gegevens kunt zoeken met de SELECT- en WHERE-clausule. Waarom dan jokertekens gebruiken?
Laten we, voordat we die vraag beantwoorden, een voorbeeld bekijken. Stel dat de marketingafdeling van de Myflix-videobibliotheek marketingpromoties heeft uitgevoerd in de stad Texas en graag feedback zou willen krijgen over het aantal leden
die is geregistreerd vanuit Texas, kunt u de volgende SELECT-instructie samen met de WHERE-component gebruiken om de gewenste informatie te krijgen.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Zoals u kunt zien aan de hand van de bovenstaande query, wordt de "WHERE-clausule" complex. Het gebruik van jokertekens vereenvoudigt de zoekopdracht omdat we iets eenvoudigs kunnen gebruiken, zoals het onderstaande script.
SELECT * FROM members WHERE postal_address like '% TX';
Kortom, wildcards stellen ons in staat om krachtige zoekmachines te ontwikkelen tot onze datagestuurde applicaties.
Soorten jokertekens
% het percentage
% het procentteken wordt gebruikt om een patroon van nul (0) of meer tekens te specificeren . Het heeft de volgende basissyntaxis.
SELECT statements… WHERE fieldname LIKE 'xxx%';
HIER
- "SELECT-instructie ..." is de standaard SQL SELECT-opdracht.
- "WAAR" is het sleutelwoord dat wordt gebruikt om het filter toe te passen.
- "LIKE" is de vergelijkingsoperator die wordt gebruikt in combinatie met jokertekens
- 'xxx' is elk gespecificeerd startpatroon zoals een enkel teken of meer en "%" komt overeen met een willekeurig aantal tekens beginnend vanaf nul (0).
Laten we eens kijken naar een praktisch voorbeeld om de bovenstaande verklaring volledig te waarderen
Stel dat we alle films willen krijgen die het woord "code" als onderdeel van de titel hebben, dan zouden we het percentagejokerteken gebruiken om een patroonovereenkomst uit te voeren aan beide zijden van het woord "code". Hieronder staat de SQL-instructie die kan worden gebruikt om de gewenste resultaten te bereiken.
SELECT * FROM movies WHERE title LIKE '%code%';
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de onderstaande resultaten.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Merk op dat zelfs als het zoekwoord "code" aan het begin of einde van de titel verschijnt, het nog steeds wordt geretourneerd in onze resultatenset. Dit komt doordat onze code aan het begin een willekeurig aantal tekens bevat en vervolgens aan het einde overeenkomt met het patroon "code" gevolgd door een willekeurig aantal tekens.
Laten we nu ons bovenstaande script aanpassen om alleen het percentage jokerteken aan het begin van de zoekcriteria op te nemen.
SELECT * FROM movies WHERE title LIKE '%code';
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de onderstaande resultaten.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Merk op dat er slechts één record is geretourneerd uit de database. Dit komt doordat onze code overeenkomt met een willekeurig aantal tekens aan het begin van de filmtitel en alleen records krijgt die eindigen met het patroon "code".
Laten we nu het percentage jokerteken verschuiven naar het einde van het opgegeven patroon dat moet worden aangepast. Het gewijzigde script wordt hieronder weergegeven.
SELECT * FROM movies WHERE title LIKE 'code%';Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de onderstaande resultaten.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Merk op dat er slechts één record is geretourneerd uit de database. Dit komt doordat onze code overeenkomt met alle titels die beginnen met het patroon "code" gevolgd door een willekeurig aantal tekens.
_ onderstreping jokerteken
Het jokerteken voor onderstrepingstekens wordt gebruikt om exact één teken te matchen . Stel dat we willen zoeken naar alle films die zijn uitgebracht in de jaren 200x, waarin x precies één teken is dat elke waarde kan hebben. We zouden de underscore-jokerteken gebruiken om dat te bereiken. Het onderstaande script selecteert alle films die zijn uitgebracht in het jaar ‘200x’
SELECT * FROM movies WHERE year_released LIKE '200_';
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de onderstaande resultaten.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Merk op dat alleen films met 200 volgers van een willekeurig personage in het veldjaar dat is uitgebracht, zijn geretourneerd in onze resultatenset. Dit komt doordat het jokerteken voor het onderstrepingsteken overeenkomt met het patroon 200, gevolgd door een willekeurig teken
Niet zoals
De NIET logische operator kan samen met de jokertekens worden gebruikt om rijen te retourneren die niet overeenkomen met het opgegeven patroon.
Stel dat we films willen krijgen die niet in het jaar 200x zijn uitgebracht. We zouden de NIET logische operator samen met het onderstrepingsteken gebruiken om onze resultaten te krijgen. Hieronder staat het script dat dat doet.
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 |
Merk op dat alleen films die niet beginnen met 200 in het uitgebrachte jaar, zijn geretourneerd in onze resultatenset. Dit komt omdat we de NIET logische operator hebben gebruikt bij het zoeken naar jokertekens.
Escape-trefwoord.
Het ESCAPE-sleutelwoord wordt gebruikt om te ontsnappen aan patroonovereenkomstige tekens zoals het (%) percentage en het onderstrepingsteken (_) als deze deel uitmaken van de gegevens.
Laten we aannemen dat we willen controleren op de string "67%" die we kunnen gebruiken;
LIKE '67#%%' ESCAPE '#';
Als we willen zoeken naar de film "67% Guilty", kunnen we het onderstaande script gebruiken om dat te doen.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Let op de dubbele " %% " in de LIKE-clausule, de eerste in rode " % " wordt behandeld als onderdeel van de tekenreeks waarnaar moet worden gezocht. De andere wordt gebruikt om een willekeurig aantal tekens te matchen dat volgt.
Dezelfde zoekopdracht werkt ook als we zoiets als
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Overzicht
- Krachtige tools voor Like & Wildcards die helpen bij het zoeken naar gegevens die overeenkomen met complexe patronen.
- Er zijn een aantal jokertekens die onder andere het percentage, het onderstrepingsteken en de charlist bevatten (niet ondersteund door MySQL)
- Het percentagejokerteken wordt gebruikt om een willekeurig aantal tekens te matchen, beginnend bij nul (0) en meer.
- Het underscore-jokerteken wordt gebruikt om exact één teken te matchen.