
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:
- Funkcja LOWER() – Konwertuję tekst w kolumnie i zapytaniu na małe litery:
SELECT * FROM users WHERE LOWER(name) LIKE 'jan%';
- 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
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

