PostgreSQL LIKE, Not Like, Wildcards (%, _ ) Приклади

⚡ Розумний підсумок

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

  • 🔍 Core Operaтор: Функція LIKE порівнює стовпець або вираз зі шаблоном підстановки та повертає значення true у разі збігу.
  • ???? Два підстановочних символи: % збігається з нулем або більше символами; _ збігається рівно з одним символом.
  • Зворотне збігання: Поєднайте NOT з LIKE, щоб повернути рядки, які відповідають НЕ збігатися з візерунком.
  • 🛠️ Два інтерфейси: Виконайте ті самі запити з командного рядка psql або графічно всередині pgAdmin.
  • 🎯 Вхідний символ: Використовуйте речення ESCAPE для зіставлення літерал % або _ всередині шаблону.
  • 🤖 Підсилення ШІ: Інструменти баз даних штучного інтелекту перетворюють потреби пошуку простою мовою на шаблони LIKE та пропонують ILIKE, коли потрібне зіставлення без урахування регістру.

PostgreSQL LIKE, Not Like, Wildcards (%, _ ) Приклади

Команда 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% повертає відповідні книги

Щоб знайти книги, назва яких містить слово «by» будь-де:

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

Запит повертає:

Результат запиту LIKE %by% зі відповідними книгами

PostgreSQL ЛАЙК із символом _

Команда _ Знак відповідає лише одному символу. Наступний запит знаходить імена, де перший символ — це будь-яка окрема літера, за якою йде «earn» і потім будь-який суфікс:

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

Запит повертає:

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

Інший приклад — знайти будь-який текст, який закінчується на «Початківець» плюс ще один символ:

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.

% Wildcard у pgAdmin

Крок 1) Увійдіть до pgAdmin.

Крок 2) На панелі навігації ліворуч натисніть Бази даних, потім натисніть кнопку Демонстрація.

Дерево навігації pgAdmin з розгорнутими базами даних та демоверсією

Крок 3) Введіть запит у редакторі запитів:

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

Крок 4) Натисніть Виконати.

Інструмент запитів pgAdmin з кнопкою «Виконати» на панелі інструментів

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

Панель результатів pgAdmin для запиту LIKE Lear%

Щоб знайти книгу, у назві якої є слово «by»:

Крок 1) Введіть наступне в редакторі запитів:

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

Крок 2) Натисніть Виконати.

Інструмент запитів pgAdmin виконує запит LIKE %by%

У панелі результатів відображається:

Панель результатів pgAdmin для запиту LIKE %by%

_ Підстановка в pgAdmin

Крок 1) Увійдіть до pgAdmin.

Крок 2) На панелі навігації ліворуч натисніть Бази даних, потім натисніть кнопку Демонстрація.

Дерево навігації 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 виконує запит LIKE %Beginner_

У панелі результатів відображається:

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

НЕ ПОДАЄТЬСЯ в pgAdmin

Крок 1) Увійдіть до pgAdmin.

Крок 2) На панелі навігації ліворуч натисніть Бази даних, потім натисніть кнопку Демонстрація.

Дерево навігації pgAdmin для прикладу NOT LIKE

Крок 3) Щоб отримати список усіх книг, назва яких не починається з «Post», введіть:

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

Крок 4) Натисніть Виконати.

Інструмент запитів pgAdmin працює НЕ ПОДОБАЄТЬСЯ до запиту Post%

У панелі результатів відображається:

Панель результатів pgAdmin для запиту NOT LIKE Post%

Додаткові деталі результату pgAdmin для запиту NOT LIKE

Щоб перерахувати книги, назва яких не містить слова «Зроблено»:

Крок 1) Введіть наступне в редакторі запитів:

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

Крок 2) Натисніть Виконати.

Інструмент запитів pgAdmin працює NOT LIKE запиту %Made%

У панелі результатів відображається:

Панель результатів pgAdmin для запиту NOT LIKE %Made%

Завантажте базу даних, яка використовується в цьому посібнику.

Поширені запитання

LIKE враховує регістр, тоді як ILIKE виконує зіставлення без урахування регістру. ILIKE — це PostgreSQL розширення. Наприклад, ім'я ILIKE 'lear%' однаково відповідає "Learn" та "LEAR". Використовуйте ILIKE, коли регістр символів, що вводяться користувачем, непередбачуваний.

Використовуйте речення ESCAPE для оголошення символу екранування, а потім додайте перед ним літерал підстановки. Наприклад, код WHERE LIKE '50!%%' ESCAPE '!' знаходить значення, що починаються з «50%», оскільки знак оклику екранує знак відсотка.

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

Так. AI Такі помічники, як копілоти з перетворення тексту в SQL, перетворюють запити на кшталт «знайти клієнтів, електронна пошта яких містить acme» на ім'я LIKE '%acme%' та пояснюють логіку підстановки, пришвидшуючи створення звітів ad-hoc.

Генеративний штучний інтелект перевіряє план запиту, рекомендує триграмний індекс (pg_trgm) для пошуку LIKE з початковими підстановочними символами та переписує шаблони, які запобігають використанню індексу. Це перетворює повне сканування таблиці на мілісекундні пошуки для великих PostgreSQL столи.

Підсумуйте цей пост за допомогою: