В этом учебном пособии вы узнаете, как использовать MariaDB условие LIKE для сопоставления с pattern c синтаксисом и примерами.
Описание
MariaDB условие LIKE позволяет использовать подстановочные символы в предложении WHERE оператора SELECT, INSERT, UPDATE или DELETE. Это позволяет выполнять сопоставление с pattern.
Синтаксис
Синтаксис условия LIKE в MariaDB:
Параметры или аргументы
- expression
- Символьное выражение, такое как столбец или поле.
- pattern
- Символьное выражение, которое содержит сопоставляемый шаблон. Шаблоны, которые вы можете выбрать из:
Подстановочный символ Пояснение % Соответствует любой строке любой длины (в том числе нулевой длины) _ Позволяет сопоставить один символ. - escape_character
- Необязательный. Это позволяет вам проверять наличие литеральных символов, таких как % или _. Если вы не предоставите escape_character, то MariaDB предполагает, что
\
является escape_character.
Пример - использование подстановочного символа % (символ знак процента)
Первый пример MariaDB LIKE, который мы рассмотрим, включает использование символа подстановки %.
Давайте объясним, как подстановочный символ % работает в MariaDB условии LIKE. Мы хотим найти все записи таблицы sites, где site_name начинается на 'Ya'.
1 2 3 |
SELECT site_name FROM sites WHERE site_name LIKE 'Ya%'; |
Приведенный выше пример вернет в результирующем наборе сайты 'Yahoo.com' и 'Yandex.ru'.
Вы также можете использовать подстановочный символ % несколько раз в одной строке. Например,
1 2 3 |
SELECT site_name FROM sites WHERE site_name LIKE '%oo%'; |
В этом примере условия LIKE мы ищем все sites, чье site_name содержит символы 'oo'. Запрос вернет записи таблицы sites у которых значения site_name будут 'Yahoo.com' и 'Google.com'.
Пример - использование подстановочного символа _ (символ подчеркивания)
Далее давайте объясним, как подстановочного символ _ (символ подчеркивания) работает в MariaDB условии LIKE. Помните, что подстановочный символ _ ищет только однин символ.
Например:
1 2 3 |
SELECT site_name FROM sites WHERE category LIKE 'Cr_m'; |
В этом примере условия LIKE будут возвращаться все записи sites, у которых category длиной 4 символа, где первые два символа - это 'Cr', а последний символ - может быть 'm'. Например, запрос может возвращать записи, для которых category - "Crom", "Crem", "Cram", "Crim" и т.д.
Пример - использование оператора NOT
Далее давайте посмотрим, как вы можете использовать оператор NOT с подстановочными символами в MariaDB.
Давайте использовать % с оператором NOT. Вы также можете использовать условие LIKE для поиска сайтов, у которых site_name не начинается с "Best".
Например:
1 2 3 |
SELECT site_name FROM sites WHERE site_name NOT LIKE 'Best%'; |
Поместив оператор NOT перед условием LIKE, вы сможете получить все сайты, у которых site_name не начинается с "Best".
Пример - использование Escape-символов
Важно понимать, как "экранировать символы" когда pattern соответствует. Эти примеры имеют дело с Escape-символами в MariaDB.
Допустим, вы хотели найти символ % или _ в условии LIKE. Вы можете сделать это с помощью Escape-символа.
Обратите внимание, что вы можете определить только escape-символ как один символ (длина 1)
Например:
1 2 3 |
SELECT * FROM sites WHERE password LIKE '%\%'; |
Поскольку мы не указали escape-символ, MariaDB предполагает, что \
это escape-символ. Затем MariaDB предполагает, что экранирующий символ \
что приводит к тому, что MariaDB рассматривает второй символ % как литерал вместо подстановочного символа. Затем этот оператор возвращает все sites, у которых password заканчивается символом % в качестве литерала.
Мы можем переопределить escape-символ по умолчанию в MariaDB, предоставив модификатор ESCAPE следующим образом:
1 2 3 |
SELECT * FROM sites WHERE password LIKE '%!%' ESCAPE '!'; |
Этот пример MariaDB условия LIKE определяет символ ! как escape символ. Escape-символ ! приведет к тому, что MariaDB будет рассматривать символ '%' как литерал. В результате этот оператор также вернет все запсии из таблицы sites, у которых password заканчивается символом '%'.
Вот еще один более сложный пример использования escape-символов в MariaDB условии LIKE.
1 2 3 |
SELECT * FROM sites WHERE password LIKE 'P%\%'; |
Этот пример MariaDB условия LIKE возвращает все строки таблицы sites, чей password начинается с 'p' и заканчивается символом '%'. Например, он вернул бы значение, такое как 'Programming%'. Поскольку мы не указали escape-символ в условии LIKE, MariaDB предполагает, что escape-символ \
что приводит к тому, что MariaDB рассматривает второй символ '%' как литерал вместо подстановочного символа.
Мы могли бы изменить это условие LIKE, указав escape-символ следующим образом:
1 2 3 |
SELECT * FROM sites WHERE password LIKE 'P%!%' ESCAPE '!'; |
Этот пример MariaDB условия LIKE возвращает все строки таблицы sites, у которых password начинается с 'P' и заканчивается литералом '%'. Например, он вернул бы значение, такое как "Programming%".
Вы также можете использовать escape-символ с символом _ в условии MariaDB LIKE.
Например:
1 2 3 |
SELECT * FROM sites WHERE password LIKE 'P%\_'; |
Опять же, поскольку не предоставлен модификатор ESCAPE, MariaDB использует \
как escape-символ, приводящий к символу '_', который будет трактоваться как литерал вместо подстановочного символа. В этом примере будут возвращены все строки таблицы sites, чей password начинается с 'P' и заканчивается на '_'. Например, он будет возвращать значение, такое как "Programming_".