Wzorce LIKE i symbole wieloznaczne
Używaj LIKE wraz z symbolami wieloznacznymi % i _, poznaj znaczenie wielkości liter i preferuj ILIKE w PostgreSQL do wyszukiwania bez uwzględniania wielkości liter.
Wzorce LIKE i symbole wieloznaczne to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.
Działanie LIKE
LIKE porównuje ciąg znaków ze wzorcem. Dostępne są dwie symbole wieloznaczne:
%— dowolna sekwencja znaków, także pusta_— dokładnie jeden znak
Proste przykłady
Dopasowywanie według prefiksu, sufiksu i podciągu:
SELECT email FROM users WHERE email LIKE 'a%'; -- starts with a
SELECT email FROM users WHERE email LIKE '%@gmail.com'; -- ends with @gmail.com
SELECT email FROM users WHERE email LIKE '%admin%'; -- contains adminSymbole wieloznaczne oznaczające pojedynczy znak
_ dopasowuje dokładnie jeden znak. Doskonale sprawdza się w przypadku kodów o stałej długości:
-- 6-char SKU starting with A:
SELECT * FROM products WHERE sku LIKE 'A_____';
-- US zip+4:
SELECT * FROM addresses WHERE zip LIKE '_____-____';Wielkość liter
W PostgreSQL operator LIKE domyślnie rozróżnia wielkość liter: jest czuły na wielkość liter. Proszę użyć ILIKE, aby dopasowywać bez uwzględniania wielkości liter:
SELECT * FROM users WHERE email LIKE '%@gmail.com'; -- ✗ misses @GMAIL.com
SELECT * FROM users WHERE email ILIKE '%@gmail.com'; -- ✓Escapowanie symboli wieloznacznych
Aby dopasować dosłowny znak % lub _, należy użyć ukośnika odwrotnego albo zdefiniować własny znak ESCAPE:
-- Match strings that contain '50%':
SELECT * FROM coupons WHERE code LIKE '%50\%%';
-- Custom escape character:
SELECT * FROM coupons WHERE code LIKE '%50!%%' ESCAPE '!';LIKE a indeksy
Indeks B-tree pomaga tylko w przypadku wzorców z prefiksem:
-- Uses index (prefix is fixed):
SELECT * FROM users WHERE email LIKE 'alice%';
-- Does NOT use a normal index (leading wildcard):
SELECT * FROM users WHERE email LIKE '%example.com';Rozwiązywanie problemu wyszukiwania z symbolem na początku
W przypadku wyszukiwania „%example%” proszę użyć indeksu GIN opartego na trygramach (pg_trgm) — temat ten omówiono w sekcji Zaawansowane indeksowanie.
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX users_email_trgm_idx ON users USING GIN (email gin_trgm_ops);
SELECT * FROM users WHERE email LIKE '%example%'; -- now indexableNOT LIKE
Negowanie dopasowania:
SELECT * FROM emails WHERE subject NOT LIKE 'RE:%';SIMILAR TO i wyrażenia regularne (PostgreSQL)
W przypadku bardziej rozbudowanego dopasowywania wzorców:
-- SIMILAR TO — SQL regex (rarely used)
SELECT 'abc' SIMILAR TO '%(a|b)%'; -- TRUE
-- POSIX regex:
SELECT 'abc123' ~ '^[a-z]+[0-9]+$'; -- TRUE
SELECT 'ABC' ~* 'abc'; -- TRUE (case insensitive)Tworzenie pól wyszukiwania
Podczas podłączania pola wyszukiwania użytkownika należy najpierw odpowiednio przetworzyć symbole wieloznaczne w danych wejściowych, aby uniknąć nieoczekiwanego działania:
-- Escape user input's special chars before concatenating to LIKE pattern,
-- or use to_tsquery for word-level search.
SELECT * FROM products
WHERE LOWER(name) LIKE LOWER('%' || $1 || '%');Nie należy tworzyć własnego wyszukiwania pełnotekstowego
Do uporządkowanego według trafności, uwzględniającego język wyszukiwania w dokumentach proszę użyć tsvector + GIN zamiast LIKE. Temat ten omówiono w dalszej części, w sekcji Zaawansowane indeksowanie.
Podsumowanie
LIKE doskonale nadaje się do prostego dopasowywania wzorców.
%= dowolny ciąg znaków,_= jeden znak- Do dopasowywania bez uwzględniania wielkości liter należy używać ILIKE
- Wyszukiwanie według prefiksu korzysta z B-tree, a wyszukiwanie podciągu wymaga trygramów
Szybki test
Który wzorzec dopasowuje ciągi znaków kończące się na .com?
Często zadawane pytania
Czy lekcja „Wzorce LIKE i symbole wieloznaczne” jest bezpłatna?
Tak — pełny tekst „Wzorce LIKE i symbole wieloznaczne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wzorce LIKE i symbole wieloznaczne”?
Używaj LIKE wraz z symbolami wieloznacznymi % i _, poznaj znaczenie wielkości liter i preferuj ILIKE w PostgreSQL do wyszukiwania bez uwzględniania wielkości liter. Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Academy?
Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Wzorce LIKE i symbole wieloznaczne”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?
Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wzorce LIKE i symbole wieloznaczne
- IN i NOT IN dla zbiorów
- BETWEEN dla zakresów
- IS NULL, IS NOT NULL i COALESCE