KWALIFIKACJA INF3 - CZERWIEC 2023 (test 2)

PYTANIE NR 18.
SELECT imie FROM mieszkancy WHERE imie LIKE 'o_%_a'; 
Dla których imion klauzula LIKE jest prawdziwa?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wzorzec 'o_%_a' oznacza: napis zaczyna się od o, potem ma dokładnie 1 znak (_), następnie dowolny ciąg (%), potem znów 1 znak (_), i kończy się na a. Imiona "Oksana", "Oktawia" i "Olga" spełniają tę strukturę dopasowania.

Pełne wyjaśnienie:

W operatorze LIKE porównujemy wartość tekstową z wzorcem. We wzorcach najważniejsze są dwa symbole wieloznaczne:

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

Wzorzec 'o_%_a' można czytać krok po kroku:

  • musi wystąpić litera o na początku dopasowania,
  • potem jeden dowolny znak: _,
  • potem dowolny (nawet długi) fragment: %,
  • potem znów jeden znak: _,
  • na końcu musi być litera a.

Dlatego poprawny zestaw to "Oksana, Oktawia, Olga": każde z tych imion zaczyna się od "O", kończy na "a" i ma co najmniej tyle znaków, aby "_" przed końcowym "a" miał co dopasować. Imię "Oda" jest zbyt krótkie, aby spełnić fragment "_%_a" w wymaganej strukturze (brakuje znaków na dopasowania). Imię "Ola" jest również krótkie i nie spełnia struktury dla dwóch podkreśleń. Z kolei "Oktawian" nie kończy się na "a", więc odpada mimo zgodnego początku.

Uwaga egzaminacyjna: w niektórych DBMS znaczenie wielkości liter w LIKE zależy od kolacji/ustawień. W praktycznych zadaniach egzaminacyjnych zwykle przyjmuje się dopasowanie zgodne z typowym ustawieniem dla danego systemu.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Znak _ w LIKE dopasowuje dokładnie jeden dowolny znak (literę, cyfrę lub inny znak). To częsty haczyk: nie oznacza "dowolnej liczby znaków", tylko zawsze jeden. Jeśli napis ma za mało znaków, dopasowanie nie zadziała.
Znak % dopasowuje dowolny ciąg znaków, w tym także ciąg pusty. Dzięki temu można wyszukiwać wartości "zawierające" dany fragment, zaczynające się od niego lub kończące się na nim, zależnie od położenia procentu we wzorcu.
Wzorzec oznacza: początek od litery o, potem 1 znak (_), potem dowolny ciąg (%), potem znów 1 znak (_), a na końcu litera a. Czyli napis musi zaczynać się i kończyć dokładnie tak, jak we wzorcu.
Wzorzec zawiera dwa podkreślenia, czyli wymaga co najmniej dwóch znaków "po drodze" oraz końcowego "a". Dla krótkiego napisu często brakuje znaków, aby każde _ mogło dopasować dokładnie jeden znak w odpowiednim miejscu, zgodnie z kolejnością wzorca.
To zależy od DBMS i ustawionej kolacji. W części systemów i typowych ustawieniach porównania mogą być nieczułe na wielkość liter, a w innych (np. w pewnych konfiguracjach) LIKE bywa czułe. Na egzaminie warto sprawdzić, jaki silnik jest przyjęty w zadaniu.
Najczęstsze pomyłki to: traktowanie _ jak "dowolnej liczby znaków", zapominanie, że wzorzec może wymagać konkretnej końcówki/początku, oraz nieuwzględnianie minimalnej długości napisu. Uczniowie często sprawdzają tylko "zawiera fragment", zamiast całej struktury.
Policz elementy obowiązkowe: każda zwykła litera to 1 znak, każde _ to 1 znak, a % to 0 lub więcej. Dla wzorca z dwoma podkreśleniami i literami na początku/końcu minimalna długość wynika właśnie z tych stałych i podkreśleń.
LIKE jest dobre do prostych wzorców (początek/koniec/pozycje znaków). Gdy potrzebujesz złożonych reguł (np. klasy znaków, powtórzenia, alternatywy), lepsze są wyrażenia regularne (jeśli DBMS je wspiera). Na egzaminie LIKE zwykle wystarcza do podstaw.
W aplikacjach WWW LIKE bywa używane do prostego wyszukiwania, np. filtrowania użytkowników po imieniu lub nazwisku. Trzeba jednak uważać na wydajność (LIKE z początkiem "%" utrudnia użycie indeksu) oraz na poprawne parametryzowanie zapytań.
Najpierw sprawdź początek i koniec (litery bez wildcardów), potem policz wymaganą minimalną liczbę znaków dla podkreśleń. Na końcu upewnij się, że przed końcowym znakiem jest jeszcze miejsce na dopasowanie ostatniego _.
info

To pytanie poprawnie rozwiązuje 46% zdających egzamin. trudne

W praktyce zawodowej kluczowe jest to, że wzorzec 'o_%_a' oznacza: napis zaczyna się od o, potem ma dokładnie 1 znak (_), następnie dowolny ciąg (%), potem znów 1 znak (_), i kończy się na a.

Źródła:

  • 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-03-01
  • PostgreSQL Documentation: Functions and Operators – Pattern Matching (LIKE) (https://www.postgresql.org/docs/current/functions-matching.html) - dostęp 2026-03-01
  • Microsoft Learn: Transact-SQL - LIKE (https://learn.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql) - dostęp 2026-03-01

Materiały:

  • Dokumentacja DBMS: sekcja o LIKE / pattern matching
  • Ćwiczenia z zapytaniami SELECT + WHERE w przykładowej bazie
  • Zadania porównujące LIKE, ILIKE (jeśli dostępne) oraz wyrażenia regularne

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego