Mik azok a MySQL helyettesítő karakterek?
A MySQL helyettesítő karakterek olyan karakterek, amelyek elősegítik az összetett kritériumoknak megfelelő adatok keresését. A helyettesítő karaktereket a LIKE összehasonlító operátorral vagy a NOT LIKE összehasonlító operátorral együtt használják.
Miért érdemes használni a WildCard kártyákat?
Ha ismeri az SQL használatát, akkor azt gondolhatja, hogy bármilyen összetett adatot kereshet a SELECT és WHERE záradékkal. Akkor miért használja a helyettesítő karaktereket?
Mielőtt megválaszolnánk a kérdést, nézzünk meg egy példát. Tegyük fel, hogy a Myflix videó könyvtár marketing osztálya marketing promóciókat hajtott végre Texas városában, és szeretne visszajelzést kapni a tagok számáról
hogy Texasból regisztrálták, a következő SELECT utasítással és a WHERE záradékkal együtt használhatja a kívánt információk megszerzését.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Amint a fenti lekérdezésből látható, a "WHERE záradék" bonyolulttá válik. A helyettesítő karakterek használata egyszerűsíti a lekérdezést, mivel valami egyszerűt használhatunk, például az alább látható szkriptet.
SELECT * FROM members WHERE postal_address like '% TX';
Röviden, a helyettesítő karakterek lehetővé teszik számunkra, hogy az erőforrás-keresőket az adatközpontú alkalmazásokká fejlesszük.
Helyettesítő karakterek típusai
% a százalék
A százalékos karakter% nulla (0) vagy annál több karakter megadására szolgál . A következő alapvető szintaxissal rendelkezik.
SELECT statements… WHERE fieldname LIKE 'xxx%';
ITT
- A "SELECT utasítás ..." a szokásos SQL SELECT parancs.
- A "WHERE" a kulcsszó, amelyet a szűrő alkalmazására használnak.
- A "LIKE" az összehasonlító operátor, amelyet helyettesítő karakterekkel együtt használnak
- Az 'xxx' bármely megadott kezdőminta, például egyetlen vagy több karakter, és a "%" tetszőleges számú karakternek felel meg nullától (0) kezdve.
A fenti állítás teljes körű értékelése érdekében nézzünk meg egy gyakorlati példát
Tegyük fel, hogy az összes olyan filmet meg akarjuk szerezni, amelynek címe a "kód" szóval szerepel, a százalékos helyettesítő karaktert használnánk a "kód" szó mindkét oldalán a minta egyezésének végrehajtására. Az alábbiakban bemutatjuk az SQL utasítást, amely felhasználható a kívánt eredmények elérésére.
SELECT * FROM movies WHERE title LIKE '%code%';
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz az alábbiakban bemutatott eredményeket nyújtja nekünk.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Figyelje meg, hogy még akkor is, ha a "kód" keresőszó megjelenik a cím elején vagy végén, akkor is az eredményhalmazunkban jelenik meg. Ennek az az oka, hogy kódunk tetszőleges számú karaktert tartalmaz az elején, majd megegyezik a "kód" mintával, amelyet a végén tetszőleges számú karakter követ.
Módosítsuk most a fenti szkriptünket, hogy csak a keresési feltételek elején szerepeljen a helyettesítő karakter százaléka.
SELECT * FROM movies WHERE title LIKE '%code';
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz az alábbiakban bemutatott eredményeket nyújtja nekünk.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Figyelje meg, hogy csak egy rekordot adott vissza az adatbázis. Ennek az az oka, hogy kódunk tetszőleges számú karakterrel megegyezik a film címe elején, és csak olyan rekordokat kap, amelyek a "kód" mintával végződnek.
Tegyük most át a helyettesítő karakter százalékos arányát a megadott illesztendő minta végére. A módosított szkript alább látható.
SELECT * FROM movies WHERE title LIKE 'code%';A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz az alábbiakban bemutatott eredményeket nyújtja nekünk.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Figyelje meg, hogy csak egy rekordot adtak vissza az adatbázisból. Ennek az az oka, hogy kódunk megegyezik az összes címmel, amely a "kód" mintával kezdődik, amelyet tetszőleges számú karakter követ.
_ helyettesítő helyettesítő karakter
Az aláhúzás helyettesítő karakter pontosan egy karakter egyezésére szolgál . Tegyük fel, hogy meg akarjuk keresni az összes olyan filmet, amelyet a 200x-es években adtak ki, ahol x pontosan egy karakter, amely bármilyen érték lehet. Ehhez az aláhúzott vadkártyát használnánk. Az alábbi forgatókönyv kiválasztja az összes filmet, amelyet a "200x" évben adtak ki
SELECT * FROM movies WHERE year_released LIKE '200_';
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz az alábbiakban bemutatott eredményeket nyújtja nekünk.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Figyelje meg, hogy csak azok a filmek kerültek vissza az eredménykészletünkbe, amelyeknek a terepen megjelent év bármelyik szereplője követi a karaktereket. Ennek oka, hogy az alulhúzott helyettesítő karakter megfelelt a 200 mintának, amelyet bármelyik karakter követett
Nem mint
A NOT logikai operátor a helyettesítő karakterekkel együtt használható a megadott mintának nem megfelelő sorok visszaadására.
Tegyük fel, hogy olyan filmeket szeretnénk beszerezni, amelyeket nem adtak ki 200x-ban. A NOT logikai operátort az aláhúzás helyettesítőjével együtt használnánk az eredmények eléréséhez. Az alábbiakban látható az a szkript, amely ezt megteszi.
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 |
Vegye figyelembe, hogy csak azok a filmek kerültek vissza az eredménykészletünkbe, amelyek nem a megjelenés évében kezdődnek 200-tal. Ennek oka, hogy a NOT logikai operátort használtuk a helyettesítő karakteres keresés során.
Escape kulcsszó.
Az ESCAPE kulcsszó arra szolgál, hogy elkerülje a mintaillesztési karaktereket , például a (%) százalékot és az aláhúzást (_), ha ezek az adatok részét képezik.
Tegyük fel, hogy ellenőrizni akarjuk a "67%" karakterláncot, amelyet használhatunk;
LIKE '67#%%' ESCAPE '#';
Ha a "67% Guilty" című filmet akarjuk keresni, akkor az alább látható szkriptet használhatjuk erre.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Vegye figyelembe a LIKE záradék dupla "%%" -át , az első piros " % " -ot a keresendő karakterlánc részeként kezeli. A másikat a következő karakterek tetszőleges számú karakterének megfeleltetésére használják.
Ugyanez a lekérdezés akkor is működni fog, ha valami hasonlót használunk
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Összegzés
- A Like & Wildcards hatékony eszközök, amelyek segítenek az összetett mintáknak megfelelő adatok keresésében.
- Számos helyettesítő karakter szerepel, amelyek többek között tartalmazzák a százalékot, az aláhúzást és a charlistet (a MySQL nem támogatja)
- A helyettesítő karakter százalékos aránya tetszőleges számú karaktersorozathoz használható, kezdve nullától (0) és több.
- Az aláhúzás helyettesítő karakter pontosan egy karakter egyezésére szolgál.