PostgreSQL Нравится, Не нравится, Подстановочные знаки (%, _) Примеры

⚡ Умное резюме

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

  • 🔍 Основные Operaтор: Функция LIKE сравнивает столбец или выражение с шаблоном, содержащим подстановочный знак, и возвращает true в случае совпадения.
  • ???? Два джокера: % соответствует нулю или более символов; _ соответствует ровно одному символу.
  • Обратное совпадение: Объедините операторы NOT и LIKE, чтобы получить строки, которые соответствуют условиям. не соответствовать образцу.
  • 🇧🇷 Два интерфейса: Выполните те же запросы из командной строки psql или в графическом режиме в pgAdmin.
  • 🎯 Персонаж побега: Используйте оператор ESCAPE для сопоставления символов % или _ внутри шаблона.
  • 🤖 Повышение ИИ: Инструменты искусственного интеллекта для работы с базами данных преобразуют поисковые запросы на простом языке в шаблоны LIKE и предлагают ILIKE, когда требуется сопоставление без учета регистра.

PostgreSQL Нравится, Не нравится, Подстановочные знаки (%, _) Примеры

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 таблица:

Пример таблицы Book, используемой в примерах LIKE.

Чтобы найти книги, название которых начинается с «Лир», выполните следующий запрос.

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

Запрос возвращает:

LIKE Lear% Результат запроса, возвращающий соответствующие книги

Чтобы найти книги, в названии которых есть слово «автор»:

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

Запрос возвращает:

Результат запроса LIKE %by% с соответствующими книгами

PostgreSQL Как и в случае с подстановочным знаком _

_ Символ совпадает ровно с одним символом. Следующий запрос находит имена, где первый символ — любая отдельная буква, за которой следует «earn», а затем любой суффикс:

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

Запрос возвращает:

Результат запроса LIKE _earn% с односимвольным префиксом совпадает.

Ещё один пример — сопоставьте любой текст, заканчивающийся на «Beginner» плюс ещё один символ:

SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';

Запрос возвращает:

LIKE %Beginner_ результат запроса, соответствующий одному символу в конце

PostgreSQL НЕ КАК Operaтор

Объедините операторы LIKE и NOT, чтобы получить строки, которые соответствуют условиям. не Соответствуйте шаблону. Например, перечислите все книги, название которых не начинается с «Post»:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

Запрос возвращает:

НЕ ТАК, КАК Post% результат, исключая книги, начинающиеся с Post

Только одна книга удовлетворяет этому условию. Теперь перечислите все книги, название которых удовлетворяет этому условию. не содержит слово «Сделано»:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

Запрос возвращает:

НЕ ТАК, КАК %Made% результат возвращает три совпадающие книги

Три строки удовлетворяют условию.

Использование LIKE с pgAdmin

Те же самые запросы можно выполнить и в графическом виде в инструменте запросов pgAdmin.

% Подстановочный знак в pgAdmin

Шаг 1) Войдите в pgAdmin.

Шаг 2) На панели навигации слева нажмите Databases, затем нажмите Демо.

В расширенном виде навигационное дерево pgAdmin с базами данных и демонстрационной версией.

Шаг 3) Введите запрос в редакторе запросов:

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

Шаг 4) Нажмите Выполнить.

Инструмент запросов pgAdmin с кнопкой «Выполнить» на панели инструментов.

В панели результатов отображаются соответствующие книги:

Панель результатов pgAdmin для запроса LIKE Lear%.

Чтобы найти книгу, в названии которой есть слово «автор» где угодно:

Шаг 1) В редакторе запросов введите следующее:

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

Шаг 2) Нажмите Выполнить.

Инструмент pgAdmin Query Tool выполняет запрос LIKE %by%.

В панели результатов отображается:

Панель результатов pgAdmin для запроса LIKE %by%.

_ Подстановочный знак в pgAdmin

Шаг 1) Войдите в pgAdmin.

Шаг 2) На панели навигации слева нажмите Databases, затем нажмите Демо.

Дерево навигации pgAdmin, отображающее дерево баз данных.

Шаг 3) Введите запрос в редакторе запросов:

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

Шаг 4) Нажмите Выполнить.

Инструмент запросов pgAdmin выполняет запрос LIKE _earn%

В панели результатов отображается:

Панель результатов pgAdmin для запроса LIKE _earn%

Шаг 5) Запустите второй пример:

  1. Введите запрос в редакторе запросов:
SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';
  1. Нажмите Выполнить.

Инструмент запросов pgAdmin запущен, используется тип запроса %Beginner_query

В панели результатов отображается:

Панель результатов pgAdmin для запроса LIKE %Beginner_

НЕ ТАК, КАК в pgAdmin

Шаг 1) Войдите в pgAdmin.

Шаг 2) На панели навигации слева нажмите Databases, затем нажмите Демо.

Навигационное дерево pgAdmin для примера «НЕ ТАКОГО, КАК»

Шаг 3) Чтобы вывести список всех книг, название которых не начинается с «Post», введите:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

Шаг 4) Нажмите Выполнить.

Инструмент запросов pgAdmin работает НЕ ТАК, КАК при выполнении запроса Post%.

В панели результатов отображается:

Панель результатов pgAdmin для запроса NOT LIKE Post%.

Дополнительные сведения о результатах pgAdmin для запроса NOT LIKE

Чтобы перечислить книги, в названии которых нет слова «Made»:

Шаг 1) В редакторе запросов введите следующее:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

Шаг 2) Нажмите Выполнить.

Инструмент запросов pgAdmin работает НЕ ТАК, КАК %Made% запрос

В панели результатов отображается:

Панель результатов pgAdmin для запроса NOT LIKE %Made%.

Загрузите базу данных, используемую в этом руководстве..

Часто задаваемые вопросы (FAQ)

Функция LIKE чувствительна к регистру, тогда как ILIKE выполняет сопоставление без учета регистра. ILIKE — это PostgreSQL Расширение. Например, имя ILIKE 'lear%' соответствует как «Learn», так и «LEAR». Используйте ILIKE, когда регистр пользовательского ввода непредсказуем.

Используйте оператор ESCAPE для объявления экранирующего символа, а затем добавьте перед ним буквальный подстановочный знак. Например, запрос WHERE code LIKE '50!%%' ESCAPE '!' находит значения, начинающиеся с «50%», поскольку восклицательный знак экранирует знак процента.

Используйте LIKE для простых совпадений по префиксу, суффиксу или подстроке. Переключайтесь на регулярные выражения POSIX (~ и ~*), когда вам нужны классы символов, альтернативы или квантификаторы. Регулярные выражения более мощные, но обычно медленнее, чем LIKE, для простых шаблонов.

Да. AI Такие помощники, как программы преобразования текста в SQL, переводят запросы типа «найти клиентов, чей адрес электронной почты содержит acme» в name LIKE '%acme%' и объясняют логику использования подстановочных символов, ускоряя создание отчетов по запросу.

Генеративный ИИ анализирует план запроса, рекомендует триграммный индекс (pg_trgm) для поиска LIKE с использованием ведущих символов-заменителей и переписывает шаблоны, которые препятствуют использованию индекса. Это превращает полное сканирование таблиц в поиск больших данных за миллисекунды. PostgreSQL столы.

Подведем итог этой публикации следующим образом: