MySQL Урок за заместващи символи: Харесване, НЕ харесване, Escape, ( % ), ( _ )
Какви са MySQL Заместващи знаци?
MySQL Заместващи символи са знаци, които помагат при търсене на данни, съответстващи на сложни критерии. Заместващите символи се използват заедно с оператора за сравнение LIKE или с оператора за сравнение NOT LIKE.
Защо да използвате WildCards?
Ако сте запознати с използването на SQL, може да мислите, че можете да търсите всякакви сложни данни, като използвате клауза SELECT и WHERE. Тогава защо да използвате заместващи символи?
Преди да отговорим на този въпрос, нека да разгледаме един пример. Да предположим, че маркетинговият отдел на видеотеката Myflix е извършил маркетингови промоции в град Тексас и би искал да получи обратна връзка за броя на членовете
регистриран от Тексас, можете да използвате следния оператор SELECT заедно с клаузата WHERE, за да получите желаната информация.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Както можете да видите от горната заявка, „WHERE клауза” става сложно. Използването на заместващи знаци обаче опростява заявката, тъй като можем да използваме нещо просто като скрипта, показан по-долу.
SELECT * FROM members WHERE postal_address like '% TX';
Накратко, заместващите символи ни позволяват да разработим мощни търсачки в нашите приложения, управлявани от данни.
Видове заместващи знаци
% процента
% знакът за процент се използва за указване на модел на нула (0) или повече знака. Той има следния основен синтаксис.
SELECT statements... WHERE fieldname LIKE 'xxx%';
ТУК
- "SELECT израз…” е стандартната SQL команда SELECT.
- „КЪДЕ“ е ключовата дума, използвана за прилагане на филтъра.
- „КАТО“ е операторът за сравнение, който се използва заедно със заместващи знаци
- „xxx“ е всеки определен начален шаблон, като например един знак или повече, а „%“ съвпада с произволен брой знаци, започвайки от нула (0).
За да оценим напълно горното твърдение, нека разгледаме един практически пример
Да предположим, че искаме да получим всички филми, които имат думата „код“ като част от заглавието, ще използваме процентния заместващ знак, за да извършим съвпадение на шаблон от двете страни на думата „код“. По-долу е SQL операторът, който може да се използва за постигане на желаните резултати.
SELECT * FROM movies WHERE title LIKE '%code%';
Изпълнение на горния скрипт в MySQL работна маса срещу myflixdb ни дава резултатите, показани по-долу.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Забележете, че дори ако ключовата дума за търсене „код“ се появи в началото или края на заглавието, тя все още се връща в нашия набор от резултати. Това е така, защото нашият код включва произволен брой знаци в началото, след което съответства на шаблона „код“, последван от произволен брой знаци в края.
Нека сега модифицираме нашия горен скрипт, за да включим процентния заместващ знак само в началото на критериите за търсене.
SELECT * FROM movies WHERE title LIKE '%code';
Изпълнение на горния скрипт в MySQL workbench срещу myflixdb ни дава резултатите, показани по-долу.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Забележете, че само един запис е върнат от базата данни. Това е така, защото нашият код съвпада с произволен брой знаци в началото на заглавието на филма и получава само записи, които завършват с шаблона „код“.
Нека сега преместим процентния заместващ знак в края на указания шаблон, който трябва да бъде съпоставен. Модифицираният скрипт е показан по-долу.
SELECT * FROM movies WHERE title LIKE 'code%';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Забележете, че само един запис е върнат от базата данни. Това е така, защото нашият код съвпада с всички заглавия, които започват с шаблона „код“, последван от произволен брой знаци.
_ долна черта заместващ знак
Използва се заместващият знак за долна черта съответства точно на един знак. Да предположим, че искаме да търсим всички филми, пуснати през годините 200x, където x е точно един символ, който може да бъде всякаква стойност. За да постигнем това, ще използваме долната черта. Сценарият по-долу избира всички филми, излезли през годината „200x“
SELECT * FROM movies WHERE year_released LIKE '200_';
Изпълнение на горния скрипт в MySQL workbench срещу myflixdb ни дава резултатите, показани по-долу.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Забележете, че само филми, които имат 200 следвания от произволен знак в годината на издаване на полето, са върнати в нашия набор от резултати. Това е така, защото заместващият знак за долна черта съответства на модела 200, последван от който и да е отделен знак
НЕ харесвам
Логическият оператор NOT може да се използва заедно със заместващите знаци за връщане на редове, които не отговарят на указания модел.
Да предположим, че искаме да получим филми, които не са пуснати през 200-та година. Ще използваме логическия оператор NOT заедно със заместващия знак за подчертаване, за да получим нашите резултати. По-долу е скриптът, който прави това.
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 |
Забележете, че в нашия набор от резултати са върнати само филми, които не започват с 200 в годината на издаване. Това е така, защото използвахме логическия оператор NOT в нашето търсене по образец със заместващи знаци.
Ключова дума Escape
Ключовата дума ESCAPE се използва за символи за съвпадение на шаблон за избягване като процент (%) и долна черта (_), ако формират част от данните.
Да предположим, че искаме да проверим за низа „67%“, който можем да използваме;
LIKE '67#%%' ESCAPE '#';
Ако искаме да търсим филма „67% Guilty“, можем да използваме скрипта, показан по-долу, за да направим това.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Обърнете внимание на двойното „%%” в клаузата LIKE, първата в червено “%” се третира като част от низа, който трябва да се търси. Другият се използва за съпоставяне на произволен брой знаци, които следват.
Същата заявка ще работи и ако използваме нещо подобно
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Oбобщение
- Like & Wildcards мощни инструменти, които помагат при търсене на данни, съответстващи на сложни модели.
- Има редица заместващи знаци, които включват процент, долна черта и списък със символи (не се поддържат от MySQL ) между другото
- Процентният заместващ знак се използва за съпоставяне на произволен брой знаци, започващи от нула (0) и повече.
- Заместващият знак за долна черта се използва за съвпадение на точно един знак.