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

W SQL czasem musimy wyszukiwać dane, które spełniają określony wzorzec. W takich sytuacjach z pomocą przychodzi operator LIKE. Dzięki niemu możemy filtrować wyniki zapytań na podstawie fragmentów tekstu, bez konieczności podawania pełnej wartości. W tym artykule szczegółowo wyjaśnię, jak działa LIKE w języku SQL oraz pokażę praktyczne przykłady jego zastosowania.
Co to jest operator LIKE?
Operator LIKE w SQL służy do wyszukiwania wartości tekstowych w kolumnach tabeli na podstawie określonego wzorca. Działa on podobnie do operatora równości =, ale pozwala na użycie symboli wieloznacznych (wildcards), które dają większą kontrolę nad wyszukiwaniem.
Podstawowe symbole wieloznaczne w LIKE
W SQL operator LIKE wykorzystuje kilka podstawowych symboli, które pomagają odnaleźć rekordy pasujące do określonego wzorca.
| Symbol | Opis | Przykład |
|---|---|---|
% |
Zastępuje dowolną liczbę znaków (zero lub więcej). | 'A%' - wyszuka wartości zaczynające się od “A”. |
_ |
Reprezentuje dokładnie jeden dowolny znak. | 'A_' - znajdzie teksty takie jak “Ab” czy “Az”, ale nie “Abb”. |
[] |
Dopasowuje jeden znak z określonego zakresu lub listy. | 'A[bc]D' - znajdzie “ABD” i “ACD”, ale nie “AED”. |
[^] |
Dopasowuje jeden znak spoza określonego zakresu lub listy. | 'A[^b]D' - wykluczy “ABD”, ale znajdzie “ACD” czy “AED”. |
Przykłady zastosowania LIKE
Teraz przyjrzymy się praktycznym przykładom użycia operatora LIKE w różnych sytuacjach.
1. Wyszukiwanie nazw zaczynających się od konkretnej litery
SELECT * FROM produkty WHERE nazwa LIKE 'A%';
Powyższe zapytanie zwróci wszystkie produkty, których nazwa zaczyna się na literę “A”.
2. Wyszukiwanie nazw kończących się na określony znak
SELECT * FROM użytkownicy WHERE email LIKE '%@gmail.com';
Tu znajdziemy wszystkie adresy e-mail, które kończą się na “@gmail.com”.
3. Wyszukiwanie fragmentu tekstu w dowolnym miejscu
SELECT * FROM posty WHERE tytuł LIKE '%SQL%';
To zapytanie zwróci wszystkie posty, które w tytule zawierają słowo “SQL”.
4. Dopasowanie wartości o określonej długości
SELECT * FROM kody_pocztowe WHERE kod LIKE '32-___';
Ten przykład wyszukuje kody pocztowe zaczynające się od “32-” i zawierające dokładnie trzy znaki po myślniku.
5. Użycie przedziałów znakowych
SELECT * FROM klienci WHERE imię LIKE '[JM]%';
Zapytanie zwróci klientów, których imię zaczyna się na “J” lub “M”.
6. Wyszukiwanie wieloznakowe
SELECT * FROM pracownicy WHERE nazwisko LIKE '[A-D]%';
Tu znajdziemy pracowników, których nazwisko zaczyna się na literę A, B, C lub D.
LIKE a wielkość liter
W zależności od systemu bazodanowego, operator LIKE może być wrażliwy na wielkość liter. W MySQL i SQLite dopasowanie jest domyślnie niewrażliwe na wielkość liter, natomiast w PostgreSQL czy SQL Server – jest zależne od ustawień kolumny.
LIKE vs. inne operatory porównania
Operator LIKE nie jest jedynym sposobem na filtrowanie danych w SQL. Możemy także używać innych operatorów:
=– porównuje wartości dokładnie (np.nazwa = 'Produkt A').IN– sprawdza, czy wartość znajduje się na liście dostępnych wartości (np.kraj IN ('Polska', 'Niemcy')).BETWEEN– sprawdza, czy wartość znajduje się w określonym przedziale (np.cena BETWEEN 100 AND 500).REGEXP– dla bardziej zaawansowanych dopasowań tekstowych możemy użyć wyrażeń regularnych (działa np. w MySQL).
Podsumowanie
Operator LIKE w języku SQL jest niezwykle przydatnym narzędziem do wyszukiwania danych na podstawie wzorców tekstowych. Dzięki symbolom wieloznacznym takim jak % i _ możemy filtrować informacje na różne sposoby, np. wyszukując teksty zaczynające się, kończące lub zawierające określone frazy. Warto pamiętać o różnicach między systemami baz danych oraz możliwościach stosowania bardziej zaawansowanych dopasowań z wykorzystaniem przedziałów znakowych.
