Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

SELECT imie FROM mieszkancy WHERE imie LIKE 'o_%_a'; Dla których imion klauzula LIKE jest prawdziwa?

SELECT imie FROM mieszkancy WHERE imie LIKE 'o_%_a';
Dla których imion klauzula LIKE jest prawdziwa?
A. Oksana, Ola, Olga.
B. Oktawia, Oktawian, Olga.
C. Oksana, Oktawia, Olga.
D. Oda, Oksana, Oktawia.

Pytanie z egzaminu CKE, czerwiec 2023 (arkusz EE.09-SG-23.06).

Wzorzec LIKE 'o_%_a' oznacza filtrowanie tekstu według kilku prostych zasad. Znak _ w SQL zastępuje dokładnie jeden dowolny znak, a znak % zastępuje dowolny ciąg znaków, także pusty. Czyli ten wzorzec można czytać tak: imię ma zaczynać się od litery O, potem musi wystąpić jeszcze jeden znak, następnie może być dowolna liczba znaków, później dokładnie jeden znak i na końcu litera a. W praktyce daje to imiona zaczynające się na O, kończące się na a i mające co najmniej 4 znaki. Oksana pasuje, bo zaczyna się na O i kończy na a. Oktawia też spełnia warunek. Olga również pasuje, bo % może oznaczać pusty fragment tekstu. Moim zdaniem to jest właśnie najczęstszy haczyk w tym zadaniu: wiele osób zapomina, że % nie musi dopasować żadnej litery. W bazach danych takie wzorce są używane np. do wyszukiwania klientów po fragmencie nazwiska, filtrowania produktów po symbolu albo sprawdzania danych tekstowych w formularzach. Dobra praktyka jest taka, żeby świadomie używać _ i %, bo przy dużych tabelach niektóre zapytania LIKE, szczególnie z % na początku, mogą gorzej korzystać z indeksów.
W tym zapytaniu kluczowe jest dokładne zrozumienie działania operatora LIKE, a nie tylko ogólne skojarzenie, że szukamy imion z literami O i a. Wzorzec 'o_%_a' nie oznacza „dowolne imię zawierające o oraz a”. Każdy znak we wzorcu ma znaczenie pozycyjne. Litera o znajduje się na początku, więc dopasowywany tekst musi zaczynać się od O, przy założeniu typowej konfiguracji bazy z porównywaniem bez rozróżniania wielkości liter. Następnie _ wymaga dokładnie jednego znaku. Potem % może dopasować zero, jeden albo wiele znaków. Drugi _ znowu wymaga dokładnie jednego znaku, a końcowe a oznacza, że imię musi kończyć się literą a. Z tego wynika minimalna długość 4 znaków. Dlatego krótkie imiona typu Oda albo Ola odpadają, mimo że zaczynają się na O i kończą na a. Brakuje im wystarczającej liczby znaków do obsłużenia dwóch symboli _. Z kolei Oktawian nie spełnia warunku końcowej litery, bo kończy się na n, a nie na a. Typowy błąd myślowy polega tu na traktowaniu _ podobnie jak %, czyli jako „cokolwiek o dowolnej długości”. To nie jest poprawne. _ to zawsze dokładnie jeden znak. Z mojego doświadczenia warto przy takich zadaniach rozpisać wzorzec znak po znaku, bo wtedy od razu widać, które napisy są za krótkie albo mają złą ostatnią literę. W realnych projektach SQL takie szczegóły mają znaczenie, np. przy wyszukiwarkach w panelach administracyjnych, walidacji kodów produktów czy filtrowaniu nazw użytkowników.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.