LIKE условие MySQL

В этом учебном пособии вы узнаете, как использовать MySQL условие LIKE для выполнения сопоставления шаблонов с синтаксисом и примерами.

Описание

MySQL условие LIKE позволяет использовать шаблоны в операторе WHERE для оператора SELECT, INSERT, UPDATE или DELETE. Это позволяет выполнять сопоставление шаблонов.

Синтаксис

Синтаксис условия LIKE в MySQL:

expression LIKE pattern [ ESCAPE 'escape_character' ]

Параметры или аргументы

expression - символьное выражение, такое как столбец или поле.
pattern - символьное выражение, содержащее сопоставление шаблонов. Шаблоны, которые вы можете выбрать:
% - позволяет вам сопоставлять любую строку любой длины (включая нулевую длину)
_ - позволяет вам сопоставлять один символ
escape_character - необязательный. Это позволяет вам проверять для буквенных экземпляров символы подстановки, такие как % или _. Если вы не укажите escape_character, MySQL предположит, что \ является escape_character.

Пример использования символа % (подстановочный символ процента)

Первый MySQL пример LIKE, который мы рассмотрим, включает использование % (подстановочный символ процента).

Рассмотрим как % работает в MySQL условии LIKE. Мы хотим найти всех customers, last_name которых начинается с «Ber».

Вы также можете использовать % несколько раз в одной строке.
Например:

В этом примере MySQL условия LIKE мы ищем всех customers, у которых last_name содержит символы 'ns'.

Пример использования подстановочного символа _ (подстановочный символ подчеркивания)

Рассмотрим, как знак _ (подстановочный символ подчеркивания) работает в MySQL условии LIKE. Помните, что подстановочный символ _ означает только один символ.
Например:

Этот пример MySQL условия LIKE возвращает всех suppliers, supplier_name которых составляет 7 символов, причем первые три символа - «Ber», а последние три символа - «ard». Например, он может вернуть всех, supplier_name которых - 'Bernard', 'Berzard', 'Bermard', 'Bersard' и т.д.

И еще один пример:

Вам может понадобиться найти номер учетной записи, но у вас есть только 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».
Например:

Помещая оператора NOT перед MySQL условием LIKE, вы получите всех suppliers, supplier_name которых не начинается с «B».

Пример использования символов Escape

Важно понять, каким образом «Escape Characters» сравнивается с шаблоном. Эти примеры относятся конкретно к экранирующим символам в MySQL.

Предположим, вы хотели найти символы % или _ в MySQL условии LIKE. Вы можете сделать это, используя символ Escape.

Обратите внимание, что вы можете определить только escape-символ как один символ (длина 1).
Например:

Поскольку мы не указали каким будет escape-символ, то MySQL предполагает, что «\» и является escape-символом. Т.к. MySQL предположил, что «\» это и есть escape-символ, что приведет к тому, что MySQL обработает символ % как литерал, вместо подстановочного символа. Затем этот запрос будет возвращать всех suppliers, у которых supplier_name = 'B\%'.

Мы можем переопределить escape-символ по умолчанию в MySQL, предоставив модификатор ESCAPE следующим образом:

Этот пример MySQL условия LIKE идентифицирует символ ! как escape-символ. Escape-символ ! приведет к тому, что MySQL обрабатывает символ % как литерал. В результате в этом запросе также будут выбраны все suppliers, supplier_name которых Br%.

Вот еще один более сложный пример использования escape-символов в MySQL условии LIKE.

Этот пример условия LIKE MySQL возвращает всех suppliers, чье имя начинается с H и заканчивается на %. Например, он вернет значение, например «Hello%». Поскольку мы не указывали escape-символ в условии LIKE, MySQL предполагает, что escape-символ «\», что приводит к тому, что MySQL обрабатывает второй символ % как литерал вместо подстановочного символа.

Мы могли бы изменить это условие LIKE, указав escape-символ следующим образом:

Этот пример MySQL условия LIKE возвращает всех suppliers, имя которых начинается с H и заканчивается символом %. Например, он вернет значение, например «Hello%».

Вы также можете использовать escape character с символом _ в MySQL условии LIKE.
Например:

Опять же, поскольку не предусмотрен модификатор ESCAPE, MySQL использует «\» в качестве символа escape, в результате чего символ _ обрабатывается как литерал вместо подстановочного символа. В этом примере будут возвращены все suppliers, supplier_name которых начинается с H и заканчивается на _. Например, запрос вернет значение, такое как «Hello_».