Tutorial MySQL Wildcards: Like, NOT Like, Escape, (%), (_)

Cuprins:

Anonim

Ce sunt metacaracterele MySQL?

MySQL Wildcard-urile sunt caractere care ajută la căutarea datelor care corespund criteriilor complexe. Wildcard-urile sunt utilizate împreună cu operatorul de comparație LIKE sau cu operatorul de comparație NOT LIKE.

De ce să folosiți WildCards?

Dacă sunteți familiarizat cu utilizarea SQL, puteți crede că puteți căuta orice date complexe utilizând clauza SELECT și WHERE. Atunci de ce să folosești metacaracterele?

Înainte de a răspunde la această întrebare, să analizăm un exemplu. Să presupunem că departamentul de marketing al bibliotecii video Myflix a desfășurat promoții de marketing în orașul Texas și ar dori să primească feedback despre numărul de membri

care a fost înregistrat din Texas, puteți utiliza următoarea instrucțiune SELECT împreună cu clauza WHERE pentru a obține informațiile dorite.

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

După cum puteți vedea din interogarea de mai sus, „clauza WHERE” devine complexă. Cu toate acestea, folosind metacaractere simplifică interogarea, deoarece putem folosi ceva simplu, cum ar fi scriptul prezentat mai jos.

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

Pe scurt, metacaracterele ne permit să dezvoltăm motoare de căutare puternice în aplicațiile noastre bazate pe date.

Tipuri de metacaractere

% procentajul

% caracterul procentual este utilizat pentru a specifica un model de zero (0) sau mai multe caractere . Are următoarea sintaxă de bază.

SELECT statements… WHERE fieldname LIKE 'xxx%';

AICI

  • „Instrucțiunea SELECT…” este comanda standard SQL SELECT.
  • „UNDE” este cuvântul cheie folosit pentru a aplica filtrul.
  • „LIKE” este operatorul de comparație care este utilizat împreună cu metacaracterele
  • „xxx” este orice tipar de pornire specificat, cum ar fi un singur caracter sau mai mult și „%” se potrivește cu orice număr de caractere începând de la zero (0).

Pentru a aprecia pe deplin afirmația de mai sus, să ne uităm la un exemplu practic

Să presupunem că dorim să obținem toate filmele care conțin cuvântul „cod” ca parte a titlului, am folosi procentajul wildcard pentru a efectua o potrivire de model pe ambele părți ale cuvântului „cod”. Mai jos este declarația SQL care poate fi utilizată pentru a obține rezultatele dorite.

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

Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb ne oferă rezultatele prezentate mai jos.

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

Observați că, chiar dacă cuvântul cheie de căutare „cod” apare la începutul sau la sfârșitul titlului, acesta este totuși returnat în setul nostru de rezultate. Acest lucru se datorează faptului că codul nostru include orice număr de caractere la început, apoi se potrivește cu modelul „cod” urmat de orice număr de caractere la sfârșit.

Să modificăm acum scriptul nostru de mai sus pentru a include procentajul comodin doar la începutul criteriilor de căutare.

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

Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb ne oferă rezultatele prezentate mai jos.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Observați că o singură înregistrare a fost returnată din baza de date. Acest lucru se datorează faptului că codul nostru se potrivește cu orice număr de caractere de la începutul titlului filmului și primește numai înregistrări care se termină cu modelul „cod”.

Să mutăm acum caracterul wildcard procentual la sfârșitul modelului specificat care urmează să fie asortat. Scriptul modificat este prezentat mai jos.

SELECT * FROM movies WHERE title LIKE 'code%';
Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb ne oferă rezultatele prezentate mai jos.
 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

Observați că o singură înregistrare a fost returnată din baza de date. Acest lucru se datorează faptului că codul nostru se potrivește cu toate titlurile care încep cu modelul „cod” urmat de orice număr de caractere.

_ subliniați metacaracterul

Comprimatul de subliniere este folosit pentru a se potrivi exact cu un caracter . Să presupunem că vrem să căutăm toate filmele lansate în anii 200x, unde x este exact un personaj care ar putea avea orice valoare. Pentru a realiza acest lucru, am folosi wild cardul de subliniere. Scenariul de mai jos selectează toate filmele lansate în anul „200x”

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

Executarea scriptului de mai sus în MySQL workbench împotriva myflixdb ne oferă rezultatele prezentate mai jos.

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

Observați că în setul nostru de rezultate au fost returnate numai filmele care au 200 de urmări ale unui personaj din anul de lansare. Acest lucru se datorează faptului că wildcard-ul de subliniere se potrivește cu modelul 200 urmat de un singur caracter

Nu ca

Operatorul NU logic poate fi utilizat împreună cu metacaracterele pentru a returna rânduri care nu se potrivesc cu modelul specificat.

Să presupunem că vrem să obținem filme care nu au fost lansate în anul 200x. Pentru a obține rezultatele, am folosi operatorul logic NU împreună cu caracterul de subliniere. Mai jos este scriptul care face asta.

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

Observați că numai filmele care nu încep cu 200 în anul lansării au fost returnate în setul nostru de rezultate. Acest lucru se datorează faptului că am folosit operatorul NU logic în căutarea tiparelor cu metacaracter.

Cuvânt cheie Escape.

Cuvântul cheie ESCAPE este folosit pentru a scăpa de caractere care se potrivesc cu tiparele, cum ar fi procentul (%) și sublinierea (_) dacă fac parte din date.

Să presupunem că vrem să verificăm șirul „67%” pe care îl putem folosi;

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

Dacă dorim să căutăm filmul „67% Guilty”, putem folosi scriptul prezentat mai jos pentru a face acest lucru.

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

Rețineți dublul „ %% ” din clauza LIKE, primul cu roșu „ % ” este tratat ca parte a șirului care trebuie căutat. Celălalt este folosit pentru a potrivi orice număr de caractere care urmează.

Aceeași interogare va funcționa și dacă folosim ceva de genul

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

rezumat

  • Like & Wildcards instrumente puternice care ajută la căutarea datelor care se potrivesc cu modele complexe.
  • Există o serie de metacaractere care includ procentul, sublinierea și lista de caractere (care nu sunt acceptate de MySQL) printre altele
  • Procentul wildcard este utilizat pentru a se potrivi cu orice număr de caractere începând de la zero (0) și mai mult.
  • Comprimatul de subliniere este folosit pentru a se potrivi exact cu un caracter.