Учебники

14) Подстановочные знаки

Какие подстановочные знаки?

Подстановочные знаки — это символы, которые помогают искать данные, соответствующие сложным критериям. Подстановочные знаки используются вместе с оператором сравнения LIKE или оператором сравнения NOT LIKE. 

Зачем использовать WildCards?

Если вы знакомы с использованием SQL, вы можете подумать, что можете искать любые сложные данные, используя предложения SELECT и WHERE. Тогда зачем использовать Wildcards?

Прежде чем ответить на этот вопрос, давайте рассмотрим пример. Предположим, что отдел маркетинга видео библиотеки 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 Workbench против myflixdb дает нам результаты, показанные ниже.

movie_idtitledirectoryear_releasedcategory_id
4Code Name BlackEdgar Jimz2010NULL
7Davinci CodeNULLNULL6

Обратите внимание, что даже если ключевое слово поиска «код» появляется в начале или конце заголовка, оно все равно возвращается в нашем наборе результатов. Это потому, что наш код включает в себя любое количество символов в начале, а затем соответствует шаблону «код», за которым следует любое количество символов в конце.

Давайте теперь изменим наш скрипт выше, чтобы он включал подстановочный знак процента только в начале критерия поиска.

SELECT * FROM movies WHERE title LIKE '%code';

Выполнение вышеупомянутого сценария в MySQL Workbench против myflixdb дает нам результаты, показанные ниже.

movie_idtitledirectoryear_releasedcategory_id
7Davinci CodeNULLNULL6

 

Обратите внимание, что только одна запись была возвращена из базы данных. Это потому, что наш код соответствует любому количеству символов в начале заголовка фильма и получает только записи, которые заканчиваются шаблоном «код».

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

SELECT * FROM movies WHERE title LIKE 'code%';
Выполнение вышеупомянутого сценария в MySQL Workbench против myflixdb дает нам результаты, показанные ниже.

movie_idtitledirectoryear_releasedcategory_id
4Code Name BlackEdgar Jimz2010NULL

 

Обратите внимание, что только одна запись была возвращена из базы данных. Это потому, что наш код соответствует всем заголовкам, которые начинаются с шаблона «код», за которым следует любое количество символов.

_ Подстановочный знак подчеркивания

Подстановочный знак подстановки используется для соответствия ровно одному символу . Давайте предположим, что мы хотим найти все фильмы, выпущенные в 200x годах, где x — это ровно один символ, который может иметь любое значение. Для этого мы бы использовали символ подчеркивания. Сценарий ниже выберите все фильмы, которые были выпущены в год «200x»

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

Выполнение вышеупомянутого сценария в MySQL Workbench против myflixdb дает нам результаты, показанные ниже.

movie_idtitledirectoryear_releasedcategory_id
2Forgetting Sarah MarshalNicholas Stoller20082
9Honey moonersJhon Shultz20058

Обратите внимание на то, что в нашем наборе результатов были возвращены только фильмы, в которых есть 200 персонажей в поле года выпуска. Это связано с тем, что символ подчеркивания соответствует шаблону 200, за которым следует любой отдельный символ

Не как

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

Предположим, мы хотим получить фильмы, которые не были выпущены в 200x году. Мы использовали бы логический оператор NOT вместе с символом подчеркивания, чтобы получить наши результаты. Ниже приведен сценарий, который делает это.

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

movie_idtitledirectoryear_releasedcategory_id
1Pirates of the Caribean 4Rob Marshall20111
4Code Name BlackEdgar Jimz2010NULL
8Underworld-AwakeninhMichahel Eal20126

Обратите внимание, что в нашем наборе результатов были возвращены только фильмы, которые не начинаются с 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 мощные инструменты, которые помогают искать данные, соответствующие сложным шаблонам.
  • Есть несколько подстановочных знаков, которые включают в себя процент, подчеркивание и charlist (не поддерживается MySQL) среди других
  • Подстановочный знак процента используется для соответствия любому количеству символов, начиная с нуля (0) и более.
  • Подстановочный знак подстановки используется для соответствия ровно одному символу.