KWALIFIKACJA INF3 - CZERWIEC 2021

PYTANIE NR 16.
SELECT imie FROM mieszkancy WHERE imie LIKE '_r%'; 
Dla których imion zastosowana w zapytaniu klauzula LIKE jest prawdziwa?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wzorzec '_r%' oznacza: pierwszy znak dowolny, drugi znak to 'r', a dalej dowolny ciąg znaków. Pasują więc imiona, w których druga litera to "r", np. "Arleta", "Krzysztof", "Krystyna", "Tristan". Imiona zaczynające się od "R" odpadają, bo wtedy "r" byłoby pierwszą literą.

Pełne wyjaśnienie:

Zapytanie filtruje wiersze warunkiem:

imie LIKE '_r%'

W operatorze LIKE stosuje się znaki wieloznaczne:

  • _ (podkreślenie) dopasowuje dokładnie jeden dowolny znak,
  • % dopasowuje dowolny ciąg znaków (także pusty).

Wzorzec '_r%' narzuca więc bardzo konkretną strukturę:

  • 1. znak imienia: dowolny (np. A, K, T),
  • 2. znak imienia: musi być literą r,
  • od 3. znaku: może być już cokolwiek (dowolna liczba znaków).

Dlatego poprawne są imiona, w których druga litera to "r": "Arleta" (Ar...), "Krzysztof" (Kr...), "Krystyna" (Kr...), "Tristan" (Tr...).

Pozostałe propozycje są błędne z typowych powodów:

  • Imiona zaczynające się od "R" (np. "Rafał", "Rebeka", "Renata", "Roksana") nie spełniają warunku, bo wtedy druga litera to "a/e/e/o", a "r" jest na pozycji pierwszej.
  • Zestaw z "Gerald, Jarosław, Marek, Tamara" nie pasuje, bo w tych imionach "r" nie występuje jako druga litera.
  • Zestaw "Krzysztof, Krystyna, Romuald" zawiera dwie pozycje spełniające warunek, ale "Romuald" zaczyna się od "Ro...", więc druga litera to "o", a nie "r".

Wskazówka egzaminacyjna: czytaj wzorzec LIKE "po pozycjach" od lewej strony. Jeśli na początku nie ma "%", dopasowanie jest od pierwszego znaku, a nie "gdziekolwiek w tekście".

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Znak _ w LIKE dopasowuje dokładnie jeden dowolny znak. Czyli wzorzec _a pasuje do dwuliterowych tekstów, gdzie druga litera to "a", np. "Ba", ale nie pasuje do "Ala".
Znak % oznacza dowolny ciąg znaków (także pusty). Wzorzec Kr% pasuje do "Kr", "Krzysztof" i "Krystyna". To najczęściej używany symbol do wyszukiwania "zaczyna się od / zawiera / kończy się na".
Wzorzec '_r%' znaczy: pierwszy znak dowolny, drugi znak to "r", a później cokolwiek. Czyli pasują wartości, w których "r" jest dokładnie na drugiej pozycji, np. "Arleta" lub "Tristan".
Bo w '_r%' litera "r" jest wymagana jako drugi znak. Jeśli tekst zaczyna się od "R…", to "r/R" jest na pozycji pierwszej, a druga litera jest inna (np. "a", "e"). Wtedy warunek LIKE jest fałszywy.
To zależy od systemu bazy i ustawień porównywania (kolacji). W jednych bazach LIKE może być domyślnie wrażliwe na wielkość liter, w innych nie. Na egzaminie zwykle zakłada się standardowe znaczenie '_' i '%', a kwestie wielkości liter wynikają z konkretnego DBMS.
Jeśli wzorzec nie zaczyna się od "%", dopasowanie dotyczy początku tekstu (pierwszych znaków). Przykład: ab% oznacza "zaczyna się od ab". Z kolei %ab% oznacza "zawiera ab gdziekolwiek".
Najczęstsze pomyłki to: zamiana ról znaków (traktowanie '_' jak "dowolny ciąg"), ignorowanie pozycji (niezauważenie, że "r" ma być drugą literą), oraz mylenie wzorca _r% z %r%, które wyszukuje "r" w dowolnym miejscu.
Dla trzeciej litery użyj dwóch podkreśleń na początku: '__r%'. Pierwsze _ to 1. znak, drugie _ to 2. znak, a "r" jest wtedy na 3. pozycji. Dalej "%" pozwala na dowolną długość reszty tekstu.
Tak, zwykle stosuje się tzw. znak ucieczki (escape), aby potraktować "%" lub "_" dosłownie. Sposób zapisu zależy od DBMS (np. składnia z ESCAPE). Na egzaminie warto pamiętać ideę: znaki wieloznaczne trzeba "uciekać", jeśli mają znaczyć dosłownie.
Najlepiej ćwiczyć na małej tabeli (np. użytkownicy) i testować warianty wzorców: 'A%', '%a', '_a%', '__a__'. Zapisuj, która pozycja znaku jest wymuszana przez '_' i porównuj wyniki zapytań z oczekiwaniami.
info

Statystycznie 44% uczniów zna prawidłową odpowiedź. trudne

Eksperci podkreślają: "Wzorzec '_r%' oznacza: pierwszy znak dowolny, drugi znak to 'r', a dalej dowolny ciąg znaków."

Źródła:

  • PostgreSQL Documentation: Pattern Matching (LIKE/ILIKE), https://www.postgresql.org/docs/current/functions-matching.html (dostęp: 2026-02-28)
  • MySQL 8.0 Reference Manual: String comparison functions and operators (LIKE), https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html#operator_like (dostęp: 2026-02-28)
  • SQLite Documentation: The LIKE and GLOB operators, https://www.sqlite.org/lang_expr.html#the_like_glob_regexp_and_match_operators (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja wybranego DBMS: sekcja o operatorach LIKE i wzorcach
  • Ćwiczenia SQL na danych testowych: filtrowanie tekstu z LIKE
  • Materiały do INF.3 z podstaw baz danych i zapytań SELECT

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego