MySQL Учебное пособие по подстановочным знакам: Нравится, НЕ Нравится, Escape, ( % ), ( _ )
Каковы MySQL Подстановочные знаки?
MySQL Wildcards — это символы, которые помогают искать данные, соответствующие сложным критериям. Подстановочные знаки используются вместе с оператором сравнения 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%';
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 можно использовать вместе с подстановочными знаками для возврата строк, не соответствующих указанному шаблону.
Предположим, мы хотим получить фильмы, которые не были выпущены в 200х году. Для получения результатов мы будем использовать логический оператор 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 используется для символы, соответствующие шаблону 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) и более.
- Подстановочный знак подчеркивания используется для соответствия ровно одному символу.