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%';
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.