KWALIFIKACJA INF3 - CZERWIEC 2020

PYTANIE NR 18.
Które z zapytań SQL, wybiera nazwiska z tabeli klient, które są minimum jednoliterowe i rozpoczynają się od litery Z?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Warunek "rozpoczyna się od Z" realizuje wzorzec LIKE z prefiksem "Z". Znak "%" oznacza dowolny ciąg znaków (także pusty), więc LIKE 'Z%' zwróci zarówno nazwiska jednoliterowe "Z", jak i dłuższe zaczynające się od Z. Pozostałe odpowiedzi używają nieprzenośnego "?" albo wzorca wymagającego co najmniej 2 znaków.

Pełne wyjaśnienie:

W SQL do wyszukiwania tekstu według wzorca stosuje się operator LIKE. W najczęściej spotykanej składni:

  • % oznacza dowolny ciąg znaków o długości 0 lub większej,
  • _ oznacza dokładnie jeden dowolny znak.

Pytanie wymaga, aby nazwisko:

  • zaczynało się od litery Z,
  • miało co najmniej 1 znak (czyli dopuszcza również nazwisko jednoliterowe).

Wzorzec 'Z%' spełnia oba warunki: pierwszy znak to "Z", a "%" może być pusty (wtedy dopasuje "Z") albo zawierać kolejne znaki (wtedy dopasuje np. "Zalewski", "Zięba"). Dlatego zapytanie:

SELECT nazwisko FROM klient WHERE nazwisko LIKE 'Z%';

jest poprawne.

Dlaczego pozostałe propozycje są niepoprawne w typowym, przenośnym SQL?

  • nazwisko='Z_?' oraz nazwisko='Z?': używają operatora =, który sprawdza ścisłą równość całego łańcucha, a znaki "_" i "?" nie będą interpretowane jako wildcardy. Dodatkowo "?" nie jest standardowym symbolem w LIKE.
  • nazwisko LIKE 'Z_%': znak "_" wymusza co najmniej jeden znak po "Z", więc minimalna długość dopasowania to 2 znaki. To wyklucza nazwisko jednoliterowe "Z", a pytanie dopuszcza minimum jednoliterowe.

Wskazówka egzaminacyjna: zawsze sprawdzaj, czy wzorzec dopuszcza przypadek graniczny (tu: długość 1) oraz czy użyto właściwego operatora (LIKE zamiast =).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Znak % w LIKE oznacza dowolny ciąg znaków o długości 0 lub większej. Dzięki temu wzorzec 'Z%' dopasuje zarówno 'Z', jak i 'Zając', bo po literze Z może być dalszy tekst albo nic.
Znak _ w LIKE oznacza dokładnie jeden dowolny znak. Przykład: wzorzec 'Z_' dopasuje "Za", ale nie dopasuje "Z" (za krótko) ani "Zaa" (za długo).
Ponieważ % może dopasować także pusty ciąg znaków. Wtedy całe dopasowanie sprowadza się do samej litery "Z". To spełnia warunek "minimum jednoliterowe" i "zaczyna się od Z".
Tak, ale z dodatkowym ograniczeniem: po "Z" musi wystąpić co najmniej jeden znak (bo "_" to jeden znak, a "%" reszta). W efekcie LIKE 'Z_%' nie zwróci nazwiska jednoliterowego "Z".
Operator = sprawdza ścisłą równość całego łańcucha znaków. Nie interpretuje "%" ani "_" jako symboli wieloznacznych. Jeśli potrzebujesz dopasowania wzorca (prefiksu), użyj LIKE.
W przenośnym SQL najczęściej używa się w LIKE tylko % i _. Znak ? nie jest standardowym wildcardem LIKE i jego znaczenie może się różnić w zależności od narzędzia lub dialektu, więc nie należy go zakładać na egzaminie.
Użyj wzorca, który wymusza drugi znak, np. LIKE 'Z_%'. "Z" zapewnia pierwszą literę, "_" wymusza przynajmniej jedną kolejną literę, a "%" dopuszcza dalszy ciąg.
Klauzula WHERE ogranicza wiersze zwracane przez SELECT do tych, które spełniają warunek. Dzięki temu możesz pobrać np. tylko nazwiska pasujące do wzorca, zamiast wszystkich rekordów z tabeli.
Najczęstsze pomyłki to: mylenie znaczenia % i _, używanie = zamiast LIKE, nieuwzględnianie przypadków granicznych (np. 1 znak), oraz przenoszenie symboli typu "?" z innych technologii na SQL.
Policz znaki wymuszające długość: każdy zwykły znak i każde _ zwiększa minimalną długość o 1. Z kolei % nie zwiększa minimum (może być puste). Dla 'Z%' minimum to 1, a dla 'Z_%' minimum to 2.
info

To pytanie poprawnie rozwiązuje 59% zdających egzamin. średnie

Według specjalistów z branży: "Warunek "rozpoczyna się od Z" realizuje wzorzec LIKE z prefiksem "Z"."

Źródła:

  • PostgreSQL Documentation: Pattern Matching, https://www.postgresql.org/docs/current/functions-matching.html (dostęp: 2026-02-18)
  • 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-18)
  • SQLite Documentation: The LIKE and GLOB operators, https://www.sqlite.org/lang_expr.html#like (dostęp: 2026-02-18)

Materiały:

  • Dokumentacja silnika bazy danych używanej na zajęciach (sekcja: LIKE/pattern matching)
  • Ćwiczenia z zapytań SELECT z filtrami WHERE
  • Zadania porównujące działanie LIKE, ILIKE (jeśli dostępne) oraz operatorów równości

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego