Kaj so nadomestni znaki MySQL?
Nadomestni znaki MySQL so znaki, ki pomagajo iskati podatke, ki se ujemajo s kompleksnimi merili. Nadomestne znake uporabljamo skupaj z operaterjem primerjave LIKE ali operaterjem primerjave NOT LIKE.
Zakaj uporabljati WildCards?
Če ste seznanjeni z uporabo SQL-a, boste morda mislili, da lahko s pomočjo klavzule SELECT in WHERE iščete zapletene podatke. Zakaj potem uporabljati nadomestne znake?
Preden odgovorimo na to vprašanje, si oglejmo primer. Recimo, da je marketinški oddelek videoteke Myflix izvajal marketinške promocije v mestu Teksas in bi želel dobiti nekaj povratnih informacij o številu članov
ki je registriran iz Teksasa, lahko uporabite naslednji stavek SELECT skupaj s klavzulo WHERE, da dobite želene informacije.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Kot lahko vidite iz zgornje poizvedbe, "klavzula WHERE" postane zapletena. Uporaba nadomestnih znakov pa poenostavlja poizvedbo, saj lahko uporabimo nekaj preprostega, kot je spodnji skript.
SELECT * FROM members WHERE postal_address like '% TX';
Skratka, nadomestni znaki nam omogočajo razvoj naprednih iskalnikov v naše podatkovno vodene aplikacije.
Vrste nadomestnih znakov
% odstotka
% odstotni znak se uporablja za določanje vzorca nič (0) ali več znakov . Ima naslednjo osnovno sintakso.
SELECT statements… WHERE fieldname LIKE 'xxx%';
TUKAJ
- "Izjava SELECT ..." je standardni ukaz SQL SELECT.
- "KJE" je ključna beseda, ki se uporablja za uporabo filtra.
- "LIKE" je operator primerjave, ki se uporablja skupaj z nadomestnimi znaki
- 'xxx' je kateri koli določen začetni vzorec, na primer en sam znak ali več, "%" pa se ujema s poljubnim številom znakov, ki se začne od nič (0).
Da bi v celoti ocenili zgornjo izjavo, si oglejmo praktični primer
Recimo, da želimo vse filme, ki vsebujejo besedo "koda" kot del naslova, uporabiti odstotni nadomestni znak za izvedbo vzorčnega ujemanja na obeh straneh besede "koda". Spodaj je izjava SQL, s katero lahko dosežemo želene rezultate.
SELECT * FROM movies WHERE title LIKE '%code%';
Izvedba zgornjega skripta v delovnem okolju MySQL proti myflixdb nam da rezultate, prikazane spodaj.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Tudi če se iskalna ključna beseda "koda" pojavi na začetku ali koncu naslova, je kljub temu vrnjena v naš rezultat. To je zato, ker naša koda vključuje poljubno število znakov na začetku, nato se ujema z vzorcem "koda", ki mu sledi poljubno število znakov na koncu.
Spremenimo zdaj naš zgornji skript, tako da bo na začetku iskalnih meril vključeval odstotni nadomestni znak.
SELECT * FROM movies WHERE title LIKE '%code';
Izvedba zgornjega skripta v delovnem okolju MySQL proti myflixdb nam da rezultate, prikazane spodaj.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Upoštevajte, da je bil iz baze podatkov vrnjen samo en zapis. To je zato, ker se naša koda ujema s poljubnim številom znakov na začetku naslova filma in dobi samo zapise, ki se končajo z vzorcem "code".
Zdaj premaknimo odstotni nadomestni znak na konec določenega vzorca, ki se ujema. Spremenjeni skript je prikazan spodaj.
SELECT * FROM movies WHERE title LIKE 'code%';Izvedba zgornjega skripta v delovnem okolju MySQL proti myflixdb nam da rezultate, prikazane spodaj.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Upoštevajte, da je bil iz baze podatkov vrnjen samo en zapis. To je zato, ker se naša koda ujema z vsemi naslovi, ki se začnejo z vzorcem "koda", ki mu sledi poljubno število znakov.
_ podčrtaj nadomestni znak
Nadomestni znak podčrtaja se uporablja za natančno ujemanje enega znaka . Predpostavimo, da želimo poiskati vse filme, ki so bili izdani v letih 200x, kjer je x točno en znak, ki bi lahko imel kakršno koli vrednost. Za dosego tega bi uporabili podčrtani wild card. Spodnji scenarij izbere vse filme, ki so bili izdani v letu "200x"
SELECT * FROM movies WHERE year_released LIKE '200_';
Izvedba zgornjega skripta v delovnem okolju MySQL proti myflixdb nam da rezultate, prikazane spodaj.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Upoštevajte, da so bili v našem naboru rezultatov vrnjeni samo filmi, ki imajo 200 zaporednih sledi kateremu koli znaku v izbranem letu na terenu. To je zato, ker se podčrtaj nadomestni znak ujema z vzorcem 200, ki mu sledi kateri koli posamezen znak
NE všeč
Logični operator NOT lahko skupaj z nadomestnimi znaki vrnete vrstice, ki se ne ujemajo z določenim vzorcem.
Recimo, da želimo dobiti filme, ki niso bili objavljeni v letu 200x. Za doseganje rezultatov bi uporabili logični operator NOT in podčrtaj nadomestni znak. Spodaj je scenarij, ki to počne.
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 |
Upoštevajte, da so bili v našem naboru vrnjeni samo filmi, ki se v letu, ki se je sprostilo, ne začnejo z 200. To je zato, ker smo pri iskanju vzorcev z nadomestnimi znaki uporabili logični operator NOT.
Ključna beseda Escape.
Ključna beseda ESCAPE se uporablja za izogibanje znakom , ki se ujemajo z vzorci , kot sta odstotek (%) in podčrtaj (_), če so del podatkov.
Predpostavimo, da želimo preveriti niz "67%", ki ga lahko uporabimo;
LIKE '67#%%' ESCAPE '#';
Če želimo iskati film "67% kriv", lahko za to uporabimo spodnji scenarij.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Upoštevajte dvojni " %% " v stavku LIKE, prvi v rdeči " % " je obravnavan kot del niza, ki ga želite iskati. Drugi se uporablja za ujemanje poljubnega števila znakov, ki sledijo.
Ista poizvedba bo delovala tudi, če uporabimo kaj podobnega
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Povzetek
- Like & Wildcards zmogljiva orodja, ki pomagajo iskati podatke, ki se ujemajo s kompleksnimi vzorci.
- Obstajajo številni nadomestni znaki, ki med drugim vključujejo odstotek, podčrtaj in seznam znakov (ki jih MySQL ne podpira)
- Nadomestni odstotek se uporablja za ujemanje poljubnega števila znakov od nič (0) in več.
- Nadomestni znak podčrtaja se uporablja za natančno ujemanje enega znaka.