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