MySQL Навчальний посібник із шаблонів підстановки: лайк, НЕ лайк, Escape, ( % ), ( _ )

Які MySQL Символи підстановки?

MySQL Символи це символи, які допомагають шукати дані за складними критеріями. Символи підстановки використовуються в поєднанні з оператором порівняння LIKE або оператором порівняння NOT LIKE.

Навіщо використовувати символи підстановки?

Якщо ви знайомі з використанням 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';

Як ви можете бачити з наведеного вище запиту, "ДЕ ЗАКЛАД» стає складним. Однак використання символів узагальнення спрощує запит, оскільки ми можемо використовувати щось просте, як-от сценарій, показаний нижче.

SELECT * FROM  members  WHERE postal_address  like '% TX';

Коротше кажучи, символи підстановки дозволяють нам розробляти потужні пошукові системи в наші програми, керовані даними.

Типи символів підстановки

% відсоток

% символ відсотка використовується для визначення шаблону нуль (0) або більше символів. Він має наступний базовий синтаксис.

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

ТУТ

  • "Оператор SELECT…» — стандартна команда SQL SELECT.
  • «ДЕ» — це ключове слово, яке використовується для застосування фільтра.
  • «LIKE» — це оператор порівняння, який використовується разом із символами підстановки
  • «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%';
Виконання наведеного вище сценарію в MySQL workbench проти myflixdb дає нам результати, показані нижче.
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 можна використовувати разом із символами підстановки, щоб повернути рядки, які не відповідають заданому шаблону.

Припустімо, ми хочемо отримати фільми, які не вийшли в 200x році. Щоб отримати результати, ми використаємо логічний оператор 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% винних», ми можемо використати для цього сценарій, показаний нижче.

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

Зверніть увагу на подвійне "%%» у реченні LIKE, перший червоним «%” розглядається як частина рядка, який потрібно шукати. Інший використовується для відповідності будь-якій кількості наступних символів.

Той самий запит також буде працювати, якщо ми використаємо щось подібне

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

Підсумки

  • Потужні інструменти Like & Wildcards, які допомагають шукати дані за складними шаблонами.
  • Існує кілька символів підстановки, які включають відсоток, підкреслення та список символів (не підтримуються MySQL ) серед інших
  • Відсотковий символ підстановки використовується для відповідності будь-якій кількості символів, починаючи з нуля (0) і більше.
  • Символ підкреслення використовується для відповідності точно одному символу.