Учебное пособие по подстановочным знакам MySQL: Нравится, НЕ нравится, Escape, (%), (_)

Содержание:

Anonim

Что такое подстановочные знаки 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';

Как видно из приведенного выше запроса, предложение 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, за которым следует любой одиночный символ

Не как

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

Предположим, мы хотим получить фильмы, которые не были выпущены в 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) и более.
  • Подстановочный знак подчеркивания используется для соответствия ровно одному символу.