MySQL-i metamärkide õpetus: meeldib, EI meeldi, põgeneb, (%), (_)

Lang L: none (table-of-contents):

Anonim

Mis on MySQL-i metamärgid?

MySQL metamärgid on tähemärgid, mis aitavad otsida andmeid keerukate kriteeriumide järgi. Metamärke kasutatakse koos võrdlusoperaatori LIKE või võrdlusoperaatoriga NOT LIKE.

Miks kasutada WildCarde?

Kui olete SQL-i kasutamisega tuttav, võite mõelda, et saate klahvide SELECT ja WHERE abil otsida mis tahes keerukaid andmeid. Miks siis kasutada metamärke?

Enne sellele küsimusele vastamist vaatame ühte näidet. Oletame, et Myflixi videoteegi turundusosakond korraldas Texase linnas turunduskampaaniaid ja sooviks saada tagasisidet liikmete arvu kohta

Texasest registreeritud, saate soovitud teabe saamiseks kasutada järgmist SELECT-lauset koos WHERE-klausliga.

SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';

Nagu ülaltoodud päringust näha, muutub klausel "WHERE" keerukaks. Metamärkide kasutamine lihtsustab päringut, kuna saame kasutada midagi lihtsat, nagu allpool näidatud skript.

SELECT * FROM members WHERE postal_address like '% TX';

Lühidalt, metamärgid võimaldavad meil arendada võimsuse otsingumootorid meie andmepõhisteks rakendusteks.

Metamärkide tüübid

% protsent

% -märki kasutatakse nulli (0) või enama tähemärgi määramiseks . Sellel on järgmine põhisüntaks.

SELECT statements… WHERE fieldname LIKE 'xxx%';

SIIN

  • "SELECT lause ..." on standardne käsk SQL SELECT.
  • "WHERE" on märksõna, mida kasutatakse filtri rakendamiseks.
  • "LIKE" on võrdlusoperaator, mida kasutatakse koos metamärkidega
  • 'xxx' on mis tahes määratud algusmuster, näiteks üks või rohkem tähemärki ja „%” sobib suvalise arvu märkidega, mis algavad nullist (0).

Eespool toodud väite täielikuks hindamiseks vaatame praktilist näidet

Oletame, et tahame hankida kõik filmid, mille pealkirjas on sõna "kood", kasutaksime protsentuaalset metamärki, et täita mustri sobitamine sõna "kood" mõlemal küljel. Allpool on SQL-lause, mida saab kasutada soovitud tulemuste saavutamiseks.

SELECT * FROM movies WHERE title LIKE '%code%';

Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb-ga annab meile allpool näidatud tulemused.

 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
7 Davinci Code NULL NULL 6

Pange tähele, et isegi kui otsingu märksõna "kood" ilmub pealkirja alguses või lõpus, tagastatakse see siiski meie tulemuste komplektis. Selle põhjuseks on asjaolu, et meie kood sisaldab alguses suvalist arvu tähemärke, seejärel sobib muster "kood", millele järgneb suvaline arv tähemärke.

Muutkem nüüd ülaltoodud skripti, lisades metamärgi protsendi ainult otsingukriteeriumide algusesse.

SELECT * FROM movies WHERE title LIKE '%code';

Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb-ga annab meile allpool näidatud tulemused.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Pange tähele, et andmebaasist on tagastatud ainult üks kirje. Seda seetõttu, et meie kood sobib filmi pealkirja alguses suvalise arvu märkidega ja saab ainult kirjed, mis lõpevad mustriga "kood".

Nihutagem nüüd metamärgi protsent vastava määratud mustri lõppu. Muudetud skript on näidatud allpool.

SELECT * FROM movies WHERE title LIKE 'code%';
Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb-ga annab meile allpool näidatud tulemused.
 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

Pange tähele, et andmebaasist on tagastatud ainult üks kirje. Selle põhjuseks on see, et meie kood vastab kõigile pealkirjadele, mis algavad mustriga "kood", millele järgneb suvaline arv tähemärke.

_ allajoonitud metamärk

Alljoonelist metamärki kasutatakse täpselt ühe märgi sobitamiseks . Oletame, et tahame otsida kõiki filme, mis ilmusid aastatel 200x, kus x on täpselt üks tähemärk, mis võiks olla mis tahes väärtus. Selle saavutamiseks kasutaksime allakriipsutavat metamärki. Allolev skript valib kõik filmid, mis ilmusid aastal 200x

SELECT * FROM movies WHERE year_released LIKE '200_';

Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb-ga annab meile allpool näidatud tulemused.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
9 Honey mooners Jhon Shultz 2005 8

Pange tähele, et meie tulemustekomplekti on tagastatud ainult need filmid, millel on välja antud aastal 200 jälgijat. Seda seetõttu, et alakriips kattis mustri 200, millele järgnes ükskõik milline üks märk

Mitte nagu

Loogilist operaatorit NOT saab kasutada koos asendusmärkidega ridade tagastamiseks, mis ei vasta määratud mustrile.

Oletame, et tahame saada filme, mida ei lastud välja aastal 200x. Tulemuste saamiseks kasutaksime NOT loogilist operaatorit koos alljoonitud metamärgiga. Allpool on skript, mis seda teeb.

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

Pange tähele, et meie tulemuste komplekti on tagastatud ainult need filmid, mis ei alga avaldatud aastal 200-ga. Selle põhjuseks on asjaolu, et me kasutasime metamärgi otsimisel loogilist operaatorit NOT.

Põgenemise märksõna.

ESCAPE märksõna kasutatakse mustritest vastavate märkide , näiteks (%) protsendi ja alakriipsu (_) vältimiseks, kui need moodustavad osa andmetest.

Oletame, et tahame kontrollida, kas stringi "67%" saaksime kasutada;

LIKE '67#%%' ESCAPE '#';

Kui tahame otsida filmi "67% süüdi", võime selleks kasutada allpool näidatud skripti.

SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';

Märkus kahekordse " % %" samasuguse klausel, esimene punane " % " käsitletakse osana stringi otsinud. Teist kasutatakse sobitamaks suvalist arvu järgnevaid märke.

Sama päring töötab ka siis, kui kasutame midagi sellist

SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';

Kokkuvõte

  • Like & Wildcards võimas tööriist, mis aitab otsida andmeid keerukate mustritega.
  • On mitmeid metamärke, mis sisaldavad muu hulgas ka protsenti, alljooni ja nimekirja (mida MySQL ei toeta)
  • Metamärgi protsenti kasutatakse sobitamaks suvalist arvu tähemärke alates nullist (0) ja rohkem.
  • Alljoonelist metamärki kasutatakse täpselt ühe märgi sobitamiseks.