KWALIFIKACJA INF3 - STYCZEŃ 2018

PYTANIE NR 21.
Wyszukując z tabeli Pracownicy wyłącznie nazwiska, w których ostatnią literą jest "i", można użyć kwerendy SQL
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wzorzec LIKE z symbolem % oznacza "dowolny ciąg znaków". Aby wybrać nazwiska, których ostatnią literą jest "i", trzeba dopasować dowolny początek i zakończyć na "i", czyli użyć wzorca %i. Wzorzec %i% zwróci także nazwiska zawierające "i" w środku.

Pełne wyjaśnienie:

Operator LIKE służy w SQL do dopasowania wartości tekstowych do wzorca. Kluczowe jest zrozumienie znaczenia symboli wieloznacznych:

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

Aby wybrać z tabeli Pracownicy wyłącznie te wartości kolumny nazwisko, których ostatnią literą jest "i", wzorzec musi wymuszać zakończenie napisu literą "i". Taki warunek spełnia wzorzec %i, bo:

  • część % "połyka" dowolny początek (np. "Kowalsk"),
  • litera i stoi na końcu wzorca, więc dopasowanie następuje tylko wtedy, gdy cały napis kończy się na "i" (np. "Kowalski").

Dlatego poprawna jest odpowiedź: SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "%i"; (logicznie: dowolny początek + końcówka "i").

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

  • Wariant z %i% dopasuje każde nazwisko zawierające literę "i" w dowolnym miejscu, np. "Iksiński" (ma "i" w środku) lub "Witold" (ma "i", ale nie kończy się na "i"). Nie spełnia więc warunku "ostatnia litera".
  • Wariant z samym "i" oznacza dopasowanie dokładnie do wartości równej "i", czyli zwróciłby co najwyżej rekord, gdzie nazwisko to pojedynczy znak "i". To praktycznie nie odpowiada intencji zadania.
  • Wariant "i%" wybiera napisy zaczynające się od "i" (np. "Iwanow"), a nie kończące się na "i". To typowy błąd wynikający z pomylenia początku i końca wzorca.

Wskazówka egzaminacyjna: gdy w treści jest "ostatnia litera", patrz, co jest na końcu wzorca LIKE; gdy jest "pierwsza litera", patrz, co jest na początku wzorca.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Znak % w LIKE oznacza dowolny ciąg znaków (również pusty). Dzięki temu wzorzec %i dopasuje każdy tekst, który kończy się na "i", niezależnie od tego, co jest wcześniej.
Użyj dopasowania końcówki: LIKE '%i'. Znak % pozwala na dowolny początek, a litera i na końcu wzorca wymusza, że ostatni znak pola to "i".
Wzorzec %i% oznacza: "gdziekolwiek w tekście ma wystąpić litera i". To dopasuje także nazwiska z "i" w środku, nawet jeśli kończą się inną literą, więc jest zbyt szeroki.
Znak _ w LIKE oznacza dokładnie jeden dowolny znak. Stosuje się go, gdy chcesz kontrolować długość dopasowania, np. LIKE 'A__' dopasuje teksty 3-znakowe zaczynające się na "A".
Dopasowanie początku realizuje się wzorcem LIKE 'i%'. Litera "i" jest na początku wzorca, a % pozwala na dowolną dalszą część tekstu. To inny warunek niż "kończące się na i".
W większości dialektów SQL literały tekstowe zapisuje się w apostrofach (np. '%i'). Cudzysłowy bywają interpretowane różnie zależnie od DBMS i ustawień. Na egzaminie najbezpieczniej rozpoznawać logikę wzorca, a nie tylko znaki.
To zależy od DBMS i kolacji (porządku sortowania). Czasem LIKE jest niewrażliwy na wielkość liter, a czasem wrażliwy. Jeśli chcesz jawnie wariant bez rozróżniania, niektóre bazy mają ILIKE lub funkcje normalizacji (np. lower/upper).
Spacje i myślniki są zwykłymi znakami w tekście, więc LIKE traktuje je jak każdy inny znak. Jeśli warunek dotyczy końcówki (np. kończy się na "i"), to LIKE '%i' nadal zadziała niezależnie od tego, czy wcześniej jest spacja lub myślnik.
Najczęściej myli się warunek "zawiera" z "zaczyna się" lub "kończy się". Typowe pomyłki to użycie %i% zamiast %i oraz odwrócenie wzorca (np. i%). Warto zawsze sprawdzić, co ma być na początku/końcu wzorca.
Ćwicz krótkie zapytania SELECT ... WHERE dla 3 przypadków: "zaczyna się", "kończy się", "zawiera". Zapisz sobie mapę: 'X%' (początek), '%X' (koniec), '%X%' (środek). To szybko buduje pewność na egzaminie.
info

Około 56% zdających odpowiada poprawnie na to pytanie. średnie

Specjaliści zwracają uwagę: "Wzorzec LIKE z symbolem % oznacza "dowolny ciąg znaków"."

Źródła:

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

Materiały:

  • Dokumentacja DBMS dla operatora LIKE i wzorców
  • Ćwiczenia z zapytań SELECT z warunkami WHERE
  • Porównanie LIKE i wyrażeń regularnych (jeśli DBMS wspiera)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego