MySQL Tutorial cu wildcards: Like, NOT Like, Escape, ( % ), ( _ )

Care sunt MySQL Wildcards?

MySQL metacaractere sunt caractere care ajută la căutarea datelor care corespund criteriilor complexe. Wildcardurile sunt folosite împreună cu operatorul de comparare LIKE sau cu operatorul de comparare 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 folosind clauzele SELECT și WHERE . Atunci de ce să folosiți Wildcards?

Înainte de a răspunde la această întrebare, să ne uităm la un exemplu. Să presupunem că departamentul de marketing al bibliotecii video Myflix a efectuat promoții de marketing în orașul Texas și ar dori să obțină feedback cu privire la numărul de membri

care este înregistrată din Texas, puteți folosi 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, folosirea wildcards 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 wildcards

% procentajul

% caracterul procentual este folosit 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 aplicarea filtrului.
  • „LIKE” este operatorul de comparație care este utilizat împreună cu metacaracterele
  • „xxx” este orice model de început specificat, cum ar fi un singur caracter sau mai multe, iar „%” 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ă vrem să obținem toate filmele care au cuvântul „cod” ca parte a titlului, am folosi caracterul metalic procentual pentru a realiza o potrivire a modelului pe ambele părți ale cuvântului „cod”. Mai jos este instrucțiunea SQL care poate fi folosită pentru a obține rezultatele dorite.

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

Executarea scriptului de mai sus în MySQL banc de lucru î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 de mai sus pentru a include caracterul joker procentual 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ă doar o î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 la începutul titlului filmului și primește numai înregistrări care se termină cu modelul „cod”.

Să mutam acum caracterul joker procentual la sfârșitul modelului specificat pentru a fi potrivit. 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ă doar o î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.

_ wildcard subliniat

Wildcardul de subliniere este folosit pentru potrivește exact un caracter. Să presupunem că vrem să căutăm toate filmele care au fost lansate în anii 200x, unde x este exact un caracter care ar putea avea orice valoare. Am folosi wild cardul de subliniere pentru a realiza asta. Scenariul de mai jos selectează toate filmele care au fost 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ă numai filmele care au 200 de urmări de orice personaj din anul de câmp lansat au fost returnate în setul nostru de rezultate. Acest lucru se datorează faptului că wildcardul de subliniere se potrivea cu modelul 200 urmat de un singur caracter

Nu ca

Operatorul logic NOT poate fi folosit î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. Am folosi operatorul logic NOT împreună cu caracterul de subliniere pentru a obține rezultatele. Mai jos este scenariul 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 lansat au fost returnate în setul nostru de rezultate. Acest lucru se datorează faptului că am folosit operatorul logic NOT în căutarea modelului nostru cu wildcard.

Escape cuvânt cheie

Cuvântul cheie ESCAPE este folosit pentru caractere de potrivire a modelului de evacuare 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ă vrem să căutăm filmul „67% Vinovați”, putem folosi scenariul prezentat mai jos pentru a face asta.

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

Rețineți dublul „%%” în clauza LIKE, prima în 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

  • Instrumente puternice Like & Wildcards care ajută la căutarea datelor care potrivesc modele complexe.
  • Există o serie de caractere metalice care includ procentul, liniuța de subliniere și lista de caractere (nu sunt acceptate de MySQL ) printre alții
  • Caracterul metalic procentual este folosit pentru a potrivi orice număr de caractere începând de la zero (0) și mai mult.
  • Wildcardul de subliniere este folosit pentru a potrivi exact un caracter.