Zapytanie SELECT * FROM produkt WHERE SUBSTR(rok_produkcji,3,2)=17; filtruje wiersze tabeli produkt na podstawie fragmentu pola rok_produkcji.
Funkcja SUBSTR(x,3,2) zwraca dwa znaki zaczynając od 3. pozycji w łańcuchu. Jeśli rok jest zapisany w formie czterech znaków, np. 2017, to:
- pozycja 1: "2"
- pozycja 2: "0"
- pozycja 3: "1"
- pozycja 4: "7"
Zatem SUBSTR('2017',3,2) zwróci "17". Warunek równości sprawdza, czy wycięty fragment ma wartość 17 (w praktyce odpowiada to końcówce "17" dla roku 2017 w takim zapisie). Dlatego poprawna jest odpowiedź "w roku 2017."
Odpowiedź "po roku 2017." byłaby prawidłowa, gdyby w zapytaniu użyto operatora porównania "większe niż" (np. > 2017) albo gdyby porównywano pełny rok jako liczbę. Tutaj występuje równość i sprawdzany jest tylko fragment tekstu.
Odpowiedź "przed rokiem 2017." także nie pasuje, bo nie ma operatora "mniejsze niż" oraz nie ma żadnej logiki wskazującej na lata wcześniejsze.
Odpowiedź "w latach innych niż 2017." wymagałaby negacji warunku (np. != 17) albo innej konstrukcji. W przedstawionym zapytaniu wybierane są tylko te rekordy, które spełniają równość.
Wskazówka egzaminacyjna: w takich zadaniach najpierw "podstaw" przykładową wartość (np. 2017) i ręcznie policz, które znaki zostaną wycięte przez SUBSTR, a dopiero potem interpretuj sens warunku WHERE.