
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, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.