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