MySQL Vodič za zamjenske znakove: Sviđa mi se, NE sviđa, pobjeći, (%), (_)

Sadržaj:

Anonim

Što su MySQL zamjenski znakovi?

Zamjenski znakovi MySQL znakovi su koji pomažu u pretraživanju podataka koji odgovaraju složenim kriterijima. Zamjenski znakovi koriste se zajedno s operatorom usporedbe LIKE ili s operatorom usporedbe NOT LIKE.

Zašto koristiti WildCards?

Ako ste upoznati s upotrebom SQL-a, možda mislite da možete pretraživati ​​bilo koje složene podatke pomoću klauzule SELECT i WHERE. Zašto onda koristiti zamjenske znakove?

Prije nego što odgovorimo na to pitanje, pogledajmo primjer. Pretpostavimo da je marketinški odjel videoteke Myflix provodio marketinške promocije u gradu Teksasu i želio dobiti povratne informacije o broju članova

koji su registrirani iz Teksasa, možete koristiti sljedeću naredbu SELECT zajedno s klauzulom WHERE da biste dobili željene informacije.

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

Kao što vidite iz gornjeg upita, klauzula "WHERE" postaje složena. Međutim, korištenje zamjenskih znakova pojednostavljuje upit jer možemo koristiti nešto jednostavno poput skripte prikazane u nastavku.

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

Ukratko, zamjenski znakovi omogućuju nam da razvijemo napredne tražilice u naše aplikacije vođene podacima.

Vrste zamjenskih znakova

% postotak

% postotni znak koristi se za određivanje uzorka od nula (0) ili više znakova . Ima sljedeću osnovnu sintaksu.

SELECT statements… WHERE fieldname LIKE 'xxx%';

OVDJE

  • "SELECT naredba ..." standardna je naredba SQL SELECT.
  • "WHERE" je ključna riječ koja se koristi za primjenu filtra.
  • "LIKE" je operator usporedbe koji se koristi zajedno sa zamjenskim znakovima
  • 'xxx' je bilo koji zadani početni obrazac, kao što je jedan znak ili više, a "%" odgovara bilo kojem broju znakova počevši od nule (0).

Da bismo u potpunosti uvažili gornju izjavu, pogledajmo praktični primjer

Pretpostavimo da želimo dobiti sve filmove koji imaju riječ "kod" kao dio naslova, koristili bismo postotni zamjenski znak da bismo izvršili podudaranje uzorka s obje strane riječi "kod". Ispod je SQL izraz koji se može koristiti za postizanje željenih rezultata.

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

Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam rezultate prikazane u nastavku.

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

Primijetite da se čak i ako se ključna riječ za pretraživanje "kod" pojavi na početku ili na kraju naslova, ona se i dalje vraća u naš skup rezultata. To je zato što naš kôd uključuje bilo koji broj znakova na početku, a zatim se podudara s uzorkom "kôd" iza kojeg slijedi bilo koji broj znakova na kraju.

Izmijenimo sada našu gornju skriptu tako da uključuje postotak zamjenskog znaka samo na početku kriterija pretraživanja.

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

Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam rezultate prikazane u nastavku.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Primijetite da je iz baze podataka vraćen samo jedan zapis. To je zato što se naš kod podudara s bilo kojim brojem znakova na početku naslova filma i dobiva samo zapise koji završavaju uzorkom "kod".

Pomaknimo sada zamjenski zamjenski postotak na kraj navedenog uzorka koji se podudara. Izmijenjena skripta prikazana je u nastavku.

SELECT * FROM movies WHERE title LIKE 'code%';
Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam rezultate prikazane u nastavku.
 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

Primijetite da je iz baze podataka vraćen samo jedan zapis. To je zato što se naš kod podudara sa svim naslovima koji počinju uzorkom "kod" iza kojeg slijedi bilo koji broj znakova.

_ podvlaka zamjenski znak

Zamjenski znak donje crte koristi se za podudaranje s točno jednim znakom . Pretpostavimo da želimo tražiti sve filmove objavljene u godinama 200x gdje je x točno jedan lik koji bi mogao imati bilo kakvu vrijednost. Za postizanje toga koristili bismo donju podvlaku. U donjem scenariju odabrani su svi filmovi objavljeni u godini "200x"

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

Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam rezultate prikazane u nastavku.

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

Primijetite da su u našem rezultatu vraćeni samo filmovi koji imaju bilo koji lik koji slijedi u bilo kojoj izdanoj godini u poljskoj godini. To je zato što se podvlaka zamjenskog znaka podudara s uzorkom 200 iza kojeg slijedi bilo koji pojedinačni znak

Ne kao

NOT logički operator može se koristiti zajedno sa zamjenskim znakovima za vraćanje redaka koji se ne podudaraju s navedenim uzorkom.

Pretpostavimo da želimo dobiti filmove koji nisu objavljeni u godini 200x. Za dobivanje rezultata koristili bismo logički operator NOT zajedno sa donjim znakom. Ispod je skripta koja to čini.

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

Primijetite da su u našem rezultatu vraćeni samo filmovi koji ne počinju s 200 u godini izdavanja. To je zato što smo u pretraživanju uzorka zamjenskih znakova koristili logički operator NOT.

Escape ključna riječ.

Ključna riječ ESCAPE koristi se za izbjegavanje znakova koji se podudaraju s uzorcima, poput postotka (%) i podvlake (_) ako čine dio podataka.

Pretpostavimo da želimo provjeriti postoji li niz "67%" koji možemo koristiti;

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

Ako želimo potražiti film "67% kriv", za to možemo koristiti dolje prikazanu skriptu.

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

Primijetite dvostruki " %% " u klauzuli LIKE, prvi crveni " % " tretira se kao dio niza koji se traži. Drugi se koristi za podudaranje bilo kojeg broja znakova koji slijede.

Isti upit također će raditi ako koristimo nešto poput

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

Sažetak

  • Like & Wildcards moćni alati koji pomažu u pretraživanju podataka koji odgovaraju složenim uzorcima.
  • Postoji niz zamjenskih znakova koji među ostalim uključuju postotak, donju crtu i popis char (koji MySQL ne podržava)
  • Zamjenski postotak koristi se za podudaranje s bilo kojim brojem znakova počevši od nule (0) i više.
  • Zamjenski znak donje crte koristi se za podudaranje s točno jednim znakom.