В этом учебном пособии вы узнаете, как использовать MySQL условие LIKE для выполнения сопоставления шаблонов с синтаксисом и примерами.
Описание
MySQL условие LIKE позволяет использовать шаблоны в операторе WHERE для оператора SELECT, INSERT, UPDATE или DELETE. Это позволяет выполнять сопоставление шаблонов.
Синтаксис
Синтаксис условия LIKE в MySQL:
Параметры или аргументы
expression - символьное выражение, такое как столбец или поле.
pattern - символьное выражение, содержащее сопоставление шаблонов. Шаблоны, которые вы можете выбрать:
% - позволяет вам сопоставлять любую строку любой длины (включая нулевую длину)
_ - позволяет вам сопоставлять один символ
escape_character - необязательный. Это позволяет вам проверять для буквенных экземпляров символы подстановки, такие как % или _. Если вы не укажите escape_character, MySQL предположит, что \ является escape_character.
Пример использования символа % (подстановочный символ процента)
Первый MySQL пример LIKE, который мы рассмотрим, включает использование % (подстановочный символ процента).
Рассмотрим как % работает в MySQL условии LIKE. Мы хотим найти всех customers, last_name которых начинается с «Ber».
1 2 3 |
SELECT customer_name FROM customers WHERE last_name LIKE 'Ber%'; |
Вы также можете использовать % несколько раз в одной строке.
Например:
1 2 3 |
SELECT customer_name FROM customers WHERE last_name LIKE '%ns%'; |
В этом примере MySQL условия LIKE мы ищем всех customers, у которых last_name содержит символы 'ns'.
Пример использования подстановочного символа _ (подстановочный символ подчеркивания)
Рассмотрим, как знак _ (подстановочный символ подчеркивания) работает в MySQL условии LIKE. Помните, что подстановочный символ _ означает только один символ.
Например:
1 2 3 |
SELECT supplier_name FROM suppliers WHERE supplier_name LIKE 'Ber_ard'; |
Этот пример MySQL условия LIKE возвращает всех suppliers, supplier_name которых составляет 7 символов, причем первые три символа - «Ber», а последние три символа - «ard». Например, он может вернуть всех, supplier_name которых - 'Bernard', 'Berzard', 'Bermard', 'Bersard' и т.д.
И еще один пример:
1 2 3 |
SELECT * FROM suppliers WHERE account_number LIKE '12345_'; |
Вам может понадобиться найти номер учетной записи, но у вас есть только 5 из 6 цифр. В приведенном выше примере будет извлечено потенциально 10 записей (где отсутствующее значение могло бы равняться чему угодно от 0 до 9). Например, запрос может вернуть suppliers, чьи номера учетной записи: 123450, 123451, 123452, 123453, 123454, 123455, 123456, 123457, 123458, 123459
Пример использования оператора NOT
Рассмотрим, как вы будете использовать оператор NOT с подстановочными символами.
Давайте использовать подстановочный символ % с оператором NOT. Вы также можете использовать MySQL условие LIKE для поиска suppliers, supplier_name которых не начинается с «B».
Например:
1 2 3 |
SELECT supplier_name FROM suppliers WHERE supplier_name NOT LIKE 'B%'; |
Помещая оператора NOT перед MySQL условием LIKE, вы получите всех suppliers, supplier_name которых не начинается с «B».
Пример использования символов Escape
Важно понять, каким образом «Escape Characters» сравнивается с шаблоном. Эти примеры относятся конкретно к экранирующим символам в MySQL.
Предположим, вы хотели найти символы % или _ в MySQL условии LIKE. Вы можете сделать это, используя символ Escape.
Обратите внимание, что вы можете определить только escape-символ как один символ (длина 1).
Например:
1 2 3 |
SELECT * FROM suppliers WHERE supplier_name LIKE 'B\%'; |
Поскольку мы не указали каким будет escape-символ, то MySQL предполагает, что «\» и является escape-символом. Т.к. MySQL предположил, что «\» это и есть escape-символ, что приведет к тому, что MySQL обработает символ % как литерал, вместо подстановочного символа. Затем этот запрос будет возвращать всех suppliers, у которых supplier_name = 'B\%'.
Мы можем переопределить escape-символ по умолчанию в MySQL, предоставив модификатор ESCAPE следующим образом:
1 2 3 |
SELECT * FROM suppliers WHERE supplier_name LIKE 'Br!%' ESCAPE '!'; |
Этот пример MySQL условия LIKE идентифицирует символ ! как escape-символ. Escape-символ ! приведет к тому, что MySQL обрабатывает символ % как литерал. В результате в этом запросе также будут выбраны все suppliers, supplier_name которых Br%.
Вот еще один более сложный пример использования escape-символов в MySQL условии LIKE.
1 2 3 |
SELECT * FROM suppliers WHERE supplier_name LIKE 'H%\%'; |
Этот пример условия LIKE MySQL возвращает всех suppliers, чье имя начинается с H и заканчивается на %. Например, он вернет значение, например «Hello%». Поскольку мы не указывали escape-символ в условии LIKE, MySQL предполагает, что escape-символ «\», что приводит к тому, что MySQL обрабатывает второй символ % как литерал вместо подстановочного символа.
Мы могли бы изменить это условие LIKE, указав escape-символ следующим образом:
1 2 3 |
SELECT * FROM suppliers WHERE supplier_name LIKE 'H%!%' ESCAPE '!'; |
Этот пример MySQL условия LIKE возвращает всех suppliers, имя которых начинается с H и заканчивается символом %. Например, он вернет значение, например «Hello%».
Вы также можете использовать escape character с символом _ в MySQL условии LIKE.
Например:
1 2 3 |
SELECT * FROM suppliers WHERE supplier_name LIKE 'H%\_'; |
Опять же, поскольку не предусмотрен модификатор ESCAPE, MySQL использует «\» в качестве символа escape, в результате чего символ _ обрабатывается как литерал вместо подстановочного символа. В этом примере будут возвращены все suppliers, supplier_name которых начинается с H и заканчивается на _. Например, запрос вернет значение, такое как «Hello_».