W tabeli uczniowie pole data_ur ma zapis daty w formacie rrrr-mm-dd. Aby wyświetlić osoby urodzone w jednym roku, trzeba odfiltrować rekordy tak, by początek zapisu daty wskazywał ten rok.
Poprawne zapytanie to: SELECT imie, nazwisko FROM uczniowie WHERE data_ur LIKE "2001-%-%";
- SELECT imie, nazwisko – zwraca dokładnie te dwie kolumny, o które pyta zadanie (bez id i bez daty).
- LIKE – służy do dopasowania wzorca tekstowego.
- Wzorzec "2001-%-%" oznacza: ciąg zaczynający się od 2001-, a następnie dowolne znaki w miejscu miesiąca i dnia. Znak % jest wieloznacznikiem i może zastąpić dowolny ciąg znaków, więc obejmie wszystkie miesiące (01–12) i dni (01–31).
Dlaczego pozostałe propozycje są błędne?
- SELECT * ... data_ur == 2001-%-% – w SQL standardowo nie używa się operatora ==, a dodatkowo wzorzec nie jest ujęty jako literał tekstowy. Taki zapis jest niepoprawny składniowo w wielu silnikach.
- SELECT * ... LIKE "2001" – wzorzec nie odpowiada pełnej postaci daty. Data ma postać 2001-..-.., więc dopasowanie samego "2001" zwykle nie zwróci oczekiwanych rekordów.
- ... LIKE "2001-*-*" – w SQL w operatorze LIKE nie stosuje się gwiazdki * jako wieloznacznika; właściwy jest % (oraz _ dla pojedynczego znaku).
W praktyce często spotyka się też rozwiązanie zakresowe (np. od 2001-01-01 do 2001-12-31), które bywa bardziej przenośne i jednoznaczne, ale w tym zadaniu poprawnie sprawdza się dopasowanie wzorca LIKE.