Підручник із підстановок MySQL: Подобається, НЕ подобається, Втеча, (%), (_)

Зміст:

Anonim

Що таке підстановки 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.
  • "ДЕ" - ключове слово, що використовується для застосування фільтра.
  • "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 проти myflixdb дає нам результати, показані нижче.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Зверніть увагу, що з бази даних повернуто лише один запис. Це тому, що наш код відповідає довільній кількості символів на початку назви фільму і отримує лише записи, які закінчуються зразком "код".

Давайте тепер зрушимо відсотковий шаблон до кінця зазначеного зразка, який буде збігатися. Модифікований сценарій показано нижче.

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

Зверніть увагу, що з бази даних повернуто лише один запис. Це тому, що наш код відповідає всім заголовкам, які починаються з шаблону "код", за яким слід будь-яка кількість символів.

_ підкреслення символу підстановки

Узагальнюючий знак підкреслення використовується для відповідності рівно одному символу . Припустимо, що ми хочемо шукати всі фільми, які вийшли у прокат у 200x років, де x - це точно один символ, який може мати будь-яке значення. Для цього ми використали б символи підкреслення. Наведений нижче сценарій вибирає всі фільми, випущені в рік "200x"

SELECT * FROM movies WHERE year_released LIKE '200_';

Виконання вищезазначеного сценарію в робочому середовищі MySQL проти 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 року у випуску. Це тому, що ми використовували НЕ логічний оператор у нашому пошуку шаблону підстановки.

Ключове слово втечі.

Ключове слово 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) і більше.
  • Узагальнюючий знак підкреслення використовується для відповідності рівно одному символу.