Jak działa ILIKE w języku SQL? Przykłady zastosowania

Jak działa ILIKE w języku SQL? Przykłady zastosowania

Podczas pracy z bazami danych często potrzebuję filtrować rekordy na podstawie dopasowania do wzorca. W języku SQL standardowym operatorem do wyszukiwania tekstowego jest LIKE, ale co jeśli chcę, by zapytanie było niewrażliwe na wielkość liter? Wtedy do gry wkracza ILIKE. W tym artykule wyjaśniam, jak działa ILIKE w języku SQL oraz pokazuję przykłady zastosowania.

Czym jest operator ILIKE?

ILIKE to operator dostępny w niektórych systemach bazodanowych, który działa podobnie jak LIKE, ale ignoruje wielkość liter. Najczęściej spotykany jest w PostgreSQL, gdzie stanowi rozszerzenie standardowego SQL.

Podstawowa składnia ILIKE

Składnia operatora ILIKE jest identyczna jak w przypadku LIKE:

SELECT * FROM tabela WHERE kolumna ILIKE 'wzorzec';

Wzorzec może zawierać dwa specjalne symbole:

  • % – zastępuje dowolny ciąg znaków (może być pusty)
  • _ – zastępuje dokładnie jeden dowolny znak

Dzięki temu mogę na przykład wyszukać wszystkie imiona zaczynające się na „a” (niezależnie od wielkości liter):

SELECT * FROM users WHERE name ILIKE 'a%';

Przykłady zastosowania ILIKE

1. Wyszukiwanie użytkowników o nazwiskach zawierających określony fragment

Załóżmy, że mam tabelę users, w której chcę znaleźć wszystkich użytkowników, których nazwisko zawiera „kowalski” – niezależnie od tego, czy zaczyna się ono małą czy wielką literą:

SELECT * FROM users WHERE last_name ILIKE '%kowalski%';

2. Wyszukiwanie produktów o określonej nazwie

W tabeli products chcę znaleźć wszystkie produkty o nazwach zawierających słowo „laptop” niezależnie od liter:

SELECT * FROM products WHERE name ILIKE '%laptop%';

3. Dopasowanie do konkretnego formatu tekstowego

Wyszukiwanie wszystkich użytkowników, których adres e-mail zaczyna się od „admin”:

SELECT * FROM users WHERE email ILIKE 'admin%';

ILIKE vs. LIKE – kluczowe różnice

Operator Czułość na wielkość liter Dostępność
LIKE Tak (rozróżnia wielkość liter) Obsługiwany w większości baz danych
ILIKE Nie (ignoruje wielkość liter) Głównie w PostgreSQL

Alternatywne sposoby na niewrażliwe wyszukiwanie SQL

Jeśli używam bazy danych, która nie obsługuje ILIKE, mogę skorzystać z innych metod:

  1. Funkcja LOWER() – Konwertuję tekst w kolumnie i zapytaniu na małe litery:
SELECT * FROM users WHERE LOWER(name) LIKE 'jan%';
  1. Kolumna indeksowana w postaci małych liter – Tworzę dodatkową kolumnę z wartościami w małych literach i porównuję do niej:
SELECT * FROM users WHERE name_lower LIKE 'jan%';

Kiedy warto używać ILIKE?

ILIKE sprawdza się w sytuacjach, gdy użytkownik może wpisywać wartości w różnej wielkości liter, np.:

  • Wyszukiwanie w systemie CRM bez konieczności dbania o wielkość liter
  • Filtrowanie produktów w sklepie internetowym
  • Obsługa formularzy rejestracji i logowania bez błędów związanych z literami

Podsumowanie

Operator ILIKE to wygodne narzędzie dostępne w PostgreSQL, które pozwala na wyszukiwanie tekstów niezależnie od wielkości liter. Jego składnia jest identyczna jak LIKE, ale oszczędza mi konieczności normalizacji danych tekstowych. W bazach danych, które go nie obsługują, mogę użyć funkcji LOWER() jako zamiennika. Jeśli pracuję z PostgreSQL i często filtruję tekstowe dane użytkowników, zdecydowanie warto sięgnąć po ILIKE.

 

Inny ciekawy artykuł:

Jak działa LIKE w języku SQL? Przykłady zastosowania

KajoDataSpace