MySQL Vodič za zamjenske znakove: Sviđa mi se, NE Sviđa mi se, Escape, ( % ), ( _ )

Što su MySQL Zamjenski znakovi?

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

Zašto koristiti zamjenske znakove?

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

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

koji je registriran iz Texasa, možete upotrijebiti sljedeću naredbu SELECT zajedno s klauzulom WHERE kako 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 možete vidjeti iz gornjeg upita, "WHERE klauzula” postaje složeno. 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 moćne tražilice u naše aplikacije vođene podacima.

Vrste zamjenskih znakova

% postotak

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

SELECT statements... WHERE fieldname LIKE 'xxx%';

OVDJE

  • "SELECT izraz…” je standardna SQL naredba SELECT.
  • "GDJE" 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 određeni početni uzorak kao što je jedan ili više znakova, a “%” odgovara bilo kojem broju znakova počevši od nule (0).

Kako bismo u potpunosti razumjeli gornju izjavu, pogledajmo praktičan primjer

Pretpostavimo da želimo dobiti sve filmove koji imaju riječ "kod" kao dio naslova, upotrijebili bismo zamjenski znak postotka za izvođenje podudaranja uzorka s obje strane riječi "kod". Ispod je SQL naredba koja se može koristiti za postizanje željenih rezultata.

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

Izvršavanje gornje skripte u MySQL radna tezga u odnosu na 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 čak i ako se ključna riječ za pretraživanje "code" pojavljuje na početku ili kraju naslova, ona se i dalje vraća u našem skupu rezultata. To je zato što naš kod uključuje bilo koji broj znakova na početku, a zatim odgovara uzorku "kod" nakon kojeg slijedi bilo koji broj znakova na kraju.

Modificirajmo sada našu gornju skriptu da uključi zamjenski znak postotka samo na početku kriterija pretraživanja.

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

Izvršavanje gornje skripte u MySQL workbench u odnosu na 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 naš kod odgovara bilo kojem broju znakova na početku naslova filma i dobiva samo zapise koji završavaju uzorkom "kod".

Pomaknimo sada zamjenski znak za postotak na kraj navedenog uzorka za podudaranje. Modificirana skripta prikazana je u nastavku.

SELECT * FROM movies WHERE title LIKE 'code%';
Izvršavanje gornje skripte u MySQL workbench u odnosu na 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 naš kod odgovara svim naslovima koji počinju uzorkom "kod" nakon kojeg slijedi bilo koji broj znakova.

_ podvučeni zamjenski znak

Zamjenski znak donje crte koristi se za odgovaraju točno jednom znaku. Pretpostavimo da želimo pretražiti sve filmove koji su objavljeni u godinama 200x gdje je x točno jedan znak koji bi mogao imati bilo koju vrijednost. Koristili bismo zamjensku podvlaku da to postignemo. Scenarij ispod odabire sve filmove koji su objavljeni u godini “200x”

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

Izvršavanje gornje skripte u MySQL workbench u odnosu na 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

Imajte na umu da su u našem skupu rezultata vraćeni samo filmovi koji imaju 200 znakova u polju godine izdavanja. To je zato što se zamjenski znak podvlake podudara s uzorkom 200 iza kojeg slijedi bilo koji pojedinačni znak

Ne kao

Logički operator NOT može se koristiti zajedno sa zamjenskim znakovima za vraćanje redaka koji ne odgovaraju navedenom uzorku.

Pretpostavimo da želimo dobiti filmove koji nisu objavljeni 200x godine. Koristili bismo logički operator NOT zajedno sa zamjenskim znakom podvlake da bismo dobili rezultate. Ispod je skripta koja to radi.

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

Imajte na umu da su u našem skupu rezultata vraćeni samo filmovi koji ne počinju s 200 u godini izdavanja. To je zato što smo koristili logički operator NOT u našoj pretrazi uzorka zamjenskih znakova.

Escape ključna riječ

Ključna riječ ESCAPE koristi se za escape pattern odgovarajući znakovi kao što su postotak (%) i podvlaka (_) ako čine dio podataka.

Pretpostavimo da želimo provjeriti niz “67%” koji možemo koristiti;

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

Ako želimo potražiti film “67% Guilty”, za to možemo koristiti skriptu prikazanu u nastavku.

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

Obratite pažnju na dvostruko "%%” u klauzuli LIKE, prva crvena “%” tretira se kao dio niza koji se traži. Drugi se koristi za podudaranje bilo kojeg broja znakova koji slijede.

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

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

Rezime

  • Moćni alati Like & Wildcards koji pomažu u pretraživanju podataka koji odgovaraju složenim uzorcima.
  • Postoji niz zamjenskih znakova koji uključuju postotak, podvlaku i popis znakova (ne podržava MySQL ) između ostalih
  • Zamjenski znak postotka koristi se za podudaranje bilo kojeg broja znakova počevši od nule (0) i više.
  • Zamjenski znak donje crte koristi se za podudaranje točno jednog znaka.