Mitä ovat MySQL-yleismerkit?
MySQL-jokerimerkit ovat merkkejä, jotka auttavat etsimään tietoja vastaamaan monimutkaisia ehtoja. Jokerimerkkejä käytetään yhdessä LIKE-vertailuoperaattorin tai NOT LIKE -vertailuoperaattorin kanssa.
Miksi käyttää WildCardeja?
Jos olet perehtynyt SQL: n käyttöön, saatat ajatella, että voit etsiä monimutkaisia tietoja käyttämällä SELECT- ja WHERE-lausekkeita. Miksi sitten käyttää jokerimerkkejä?
Ennen kuin vastaamme tähän kysymykseen, katsotaanpa esimerkkiä. Oletetaan, että Myflix-videokirjaston markkinointiosasto toteutti markkinointikampanjoita Texasin kaupungissa ja haluaisi saada palautetta jäsenten lukumäärästä
joka on rekisteröity Texasista, voit käyttää seuraavaa SELECT-käskyä WHERE-lausekkeen kanssa saadaksesi halutut tiedot.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Kuten yllä olevasta kyselystä näet, WHERE-lauseke muuttuu monimutkaiseksi. Jokerimerkkien käyttö yksinkertaistaa kyselyä, koska voimme käyttää jotain yksinkertaista, kuten alla esitetty komentosarja.
SELECT * FROM members WHERE postal_address like '% TX';
Lyhyesti sanottuna jokerimerkit antavat meille mahdollisuuden kehittää tehohakukoneet tietopohjaisiin sovelluksiimme.
Yleismerkkityypit
% prosenttiosuus
% -merkkiä käytetään määrittämään kuvio, jossa on nolla (0) tai enemmän merkkejä . Sillä on seuraava perussyntaksi.
SELECT statements… WHERE fieldname LIKE 'xxx%';
TÄSSÄ
- "SELECT-käsky ..." on tavallinen SQL SELECT -komento.
- "WHERE" on avainsana, jota käytetään suodattimen käyttämiseen.
- "LIKE" on vertailuoperaattori, jota käytetään yleismerkkien yhteydessä
- 'xxx' on mikä tahansa määritetty aloitusmalli, kuten yksi merkki tai enemmän, ja "%" vastaa mitä tahansa merkkien määrää nollasta (0) alkaen.
Jotta voisimme täysin ymmärtää yllä olevaa lausuntoa, tarkastellaan käytännön esimerkkiä
Oletetaan, että haluamme saada kaikki elokuvat, joissa on sana "koodi" osana otsikkoa, käytämme jokerimerkkiä prosenttiosuutena kuvion otteluun sanan "koodi" molemmin puolin. Alla on SQL-käsky, jota voidaan käyttää haluttujen tulosten saavuttamiseen.
SELECT * FROM movies WHERE title LIKE '%code%';
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä myflixdb: tä vastaan antaa meille alla esitetyt tulokset.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Huomaa, että vaikka hakusana "koodi" näkyy otsikon alussa tai lopussa, se palautetaan silti tulosjoukossa. Tämä johtuu siitä, että koodissamme on mikä tahansa määrä merkkejä alussa ja sitten sama malli "koodi", jota seuraa mikä tahansa määrä merkkejä lopussa.
Muutetaan nyt yllä olevaa komentosarjaa siten, että yleismerkki lisätään vain hakukriteerien alkuun.
SELECT * FROM movies WHERE title LIKE '%code';
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä myflixdb: tä vastaan antaa meille alla esitetyt tulokset.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Huomaa, että vain yksi tietue on palautettu tietokannasta. Tämä johtuu siitä, että koodimme täsmää minkä tahansa määrän merkkejä elokuvan nimen alussa ja saa vain tietueet, jotka päättyvät kuvioon "code".
Siirretään nyt yleismerkkien prosenttiosuus määritetyn mallin loppuun vastaava. Muokattu komentosarja näkyy alla.
SELECT * FROM movies WHERE title LIKE 'code%';Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä myflixdb: tä vastaan antaa meille alla esitetyt tulokset.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Huomaa, että vain yksi tietue on palautettu tietokannasta. Tämä johtuu siitä, että koodimme vastaa kaikkia otsikoita, jotka alkavat kuviosta "code", jota seuraa mikä tahansa määrä merkkejä.
_ alleviivattu jokerimerkki
Alaviivausmerkkiä käytetään vastaamaan täsmälleen yhtä merkkiä . Oletetaan, että haluamme etsiä kaikkia elokuvia, jotka julkaistiin vuosina 200x, missä x on täsmälleen yksi merkki, joka voi olla mikä tahansa arvo. Käytämme alaviivaa villikorttia sen saavuttamiseksi. Alla olevasta käsikirjoituksesta valitaan kaikki elokuvat, jotka julkaistiin vuonna 200x
SELECT * FROM movies WHERE year_released LIKE '200_';
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä myflixdb: tä vastaan antaa meille alla esitetyt tulokset.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Huomaa, että vain elokuvat, joissa on 200 seuraajaa jokaisella hahmolla julkaistussa kenttävuodessa, on palautettu tulosjoukkoon. Tämä johtuu siitä, että alaviiva jokerimerkki täsmää kuvion 200 ja minkä tahansa yksittäisen merkin kanssa
Ei niin kuin
NOT-loogista operaattoria voidaan käyttää yhdessä yleismerkkien kanssa palauttamaan rivit, jotka eivät vastaa määritettyä mallia.
Oletetaan, että haluamme saada elokuvia, joita ei julkaistu vuonna 200x. Tulosten saamiseksi käytämme NOT-loogista operaattoria yhdessä alleviivatun yleismerkin kanssa. Alla on käsikirjoitus, joka tekee sen.
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 |
Huomaa, että vain elokuvat, jotka eivät ala 200: lla julkaisuvuonna, on palautettu tulosjoukkoon. Tämä johtuu siitä, että käytimme EI-loogista operaattoria yleismerkkihakumme yhteydessä.
Escape-avainsana.
ESCAPE-avainsanaa käytetään välttämään kuvion vastaavia merkkejä , kuten (%) prosenttiosuus ja alaviiva (_), jos ne ovat osa dataa.
Oletetaan, että haluamme tarkistaa merkkijonon "67%", jota voimme käyttää;
LIKE '67#%%' ESCAPE '#';
Jos haluamme etsiä elokuvaa "67% Guilty", voimme tehdä sen alla olevan skriptin avulla.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Huomaa kaksinkertainen " % %" samankaltaiseen lausekkeen ensimmäinen punaisella " % " käsitellään osana merkkijonoa etsitään. Toista käytetään vastaamaan mitä tahansa seuraavien merkkien määrää.
Sama kysely toimii myös, jos käytämme jotain
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Yhteenveto
- Tykkää- ja jokerimerkit - tehokkaat työkalut, jotka auttavat etsimään tietoja vastaamaan monimutkaisia malleja.
- On olemassa joukko jokerimerkkejä, jotka sisältävät muun muassa prosenttiosuuden, alaviivan ja luettelon (joita MySQL ei tue)
- Prosenttimerkkiä käytetään vastaamaan mitä tahansa merkkejä nollasta (0) alkaen.
- Alaviivausmerkkiä käytetään vastaamaan täsmälleen yhtä merkkiä.