0Pricing
SQL Academy · Lekcja

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 admin

Symbole 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 indexable

NOT 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

  1. Wzorce LIKE i symbole wieloznaczne
  2. IN i NOT IN dla zbiorów
  3. BETWEEN dla zakresów
  4. IS NULL, IS NOT NULL i COALESCE
← Powrót do SQL Academy