PostgreSQL Нравится, Не нравится, Подстановочные знаки (%, _) Примеры
⚡ Умное резюме
PostgreSQL Оператор LIKE сопоставляет текст с шаблонами, используя два символа подстановки — знак процента и символ подчеркивания. В этом руководстве показано, как использовать LIKE и NOT LIKE в операторах SELECT, с примерами работы в psql и pgAdmin для каждого случая.

PostgreSQL LIKE Оператор сопоставляет текстовые значения с шаблонами, используя подстановочные знаки. Если поисковое выражение соответствует шаблону, оператор LIKE возвращает результат. trueПодстановочные символы работают в WHERE пункт SELECT, UPDATE, INSERT или DELETE.
Каковы PostgreSQL Подстановочные знаки?
PostgreSQL поддерживает два символа подстановки LIKE:
- Знак процента (
%): соответствует нулю, одному или нескольким символам или цифрам. - Подчеркнуть (
_): совпадает ровно с одним символом или цифрой.
Эти два символа можно комбинировать в одном шаблоне. Если используется LIKE без каких-либо подстановочных символов, он ведет себя как знак равенства (=) оператор.
PostgreSQL Синтаксис LIKE
Базовый синтаксис LIKE выглядит следующим образом:
expression LIKE pattern [ ESCAPE 'escape-character' ]
- выражение — символьное выражение, обычно это имя столбца или поля.
- описания — символьное выражение, содержащее подстановочные знаки.
- escape-символ — необязательно. Позволяет сопоставлять буквальные значения.
%or_символы. Если опущена, обратная косая черта (\) — это символ экранирования по умолчанию.
PostgreSQL Как и в случае с символом подстановки %
% Знак соответствует нулю, одному или нескольким символам. Рассмотрим следующий пример. Book таблица:
Чтобы найти книги, название которых начинается с «Лир», выполните следующий запрос.
SELECT *
FROM
Book
WHERE
name LIKE 'Lear%';
Запрос возвращает:
Чтобы найти книги, в названии которых есть слово «автор»:
SELECT *
FROM
Book
WHERE
name LIKE '%by%';
Запрос возвращает:
PostgreSQL Как и в случае с подстановочным знаком _
_ Символ совпадает ровно с одним символом. Следующий запрос находит имена, где первый символ — любая отдельная буква, за которой следует «earn», а затем любой суффикс:
SELECT *
FROM
Book
WHERE
name LIKE '_earn%';
Запрос возвращает:
Ещё один пример — сопоставьте любой текст, заканчивающийся на «Beginner» плюс ещё один символ:
SELECT *
FROM
Book
WHERE
name LIKE '%Beginner_';
Запрос возвращает:
PostgreSQL НЕ КАК Operaтор
Объедините операторы LIKE и NOT, чтобы получить строки, которые соответствуют условиям. не Соответствуйте шаблону. Например, перечислите все книги, название которых не начинается с «Post»:
SELECT *
FROM
Book
WHERE
name NOT LIKE 'Post%';
Запрос возвращает:
Только одна книга удовлетворяет этому условию. Теперь перечислите все книги, название которых удовлетворяет этому условию. не содержит слово «Сделано»:
SELECT *
FROM
Book
WHERE
name NOT LIKE '%Made%';
Запрос возвращает:
Три строки удовлетворяют условию.
Использование LIKE с pgAdmin
Те же самые запросы можно выполнить и в графическом виде в инструменте запросов pgAdmin.
% Подстановочный знак в pgAdmin
Шаг 1) Войдите в pgAdmin.
Шаг 2) На панели навигации слева нажмите Databases, затем нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
SELECT *
FROM
Book
WHERE
name LIKE 'Lear%';
Шаг 4) Нажмите Выполнить.
В панели результатов отображаются соответствующие книги:
Чтобы найти книгу, в названии которой есть слово «автор» где угодно:
Шаг 1) В редакторе запросов введите следующее:
SELECT *
FROM
Book
WHERE
name LIKE '%by%';
Шаг 2) Нажмите Выполнить.
В панели результатов отображается:
_ Подстановочный знак в pgAdmin
Шаг 1) Войдите в pgAdmin.
Шаг 2) На панели навигации слева нажмите Databases, затем нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
SELECT *
FROM
Book
WHERE
name LIKE '_earn%';
Шаг 4) Нажмите Выполнить.
В панели результатов отображается:
Шаг 5) Запустите второй пример:
- Введите запрос в редакторе запросов:
SELECT *
FROM
Book
WHERE
name LIKE '%Beginner_';
- Нажмите Выполнить.
В панели результатов отображается:
НЕ ТАК, КАК в pgAdmin
Шаг 1) Войдите в pgAdmin.
Шаг 2) На панели навигации слева нажмите Databases, затем нажмите Демо.
Шаг 3) Чтобы вывести список всех книг, название которых не начинается с «Post», введите:
SELECT *
FROM
Book
WHERE
name NOT LIKE 'Post%';
Шаг 4) Нажмите Выполнить.
В панели результатов отображается:
Чтобы перечислить книги, в названии которых нет слова «Made»:
Шаг 1) В редакторе запросов введите следующее:
SELECT *
FROM
Book
WHERE
name NOT LIKE '%Made%';
Шаг 2) Нажмите Выполнить.
В панели результатов отображается:
Загрузите базу данных, используемую в этом руководстве..























