W tabeli uczniowie (kolumny: imie, nazwisko, klasa) chcemy wypisać uczniów, których nazwisko zaczyna się na literę M. Które zapytanie jest poprawne?
Dobrze.
LIKE "M%" dopasowuje wartości zaczynające się od litery M.Źle.
ORDER BY sortuje, a IN nie obsługuje wzorca „M%”.Źle.
ORDER BY służy do sortowania, nie do filtrowania.Źle.
IN sprawdza przynależność do listy wartości, nie do wzorca.Do wyszukiwania według wzorca tekstowego służy operator
LIKE w klauzuli WHERE. Znak % zastępuje dowolny ciąg znaków, więc nazwisko LIKE "M%" dopasuje wszystkie nazwiska zaczynające się na M. Poprawne zapytanie to SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE "M%". Dlatego ta odpowiedź jest właściwa.Pozostałe zapytania nie odfiltrują nazwisk na literę M. Dwa z nich filtrują w
ORDER BY, które służy WYŁĄCZNIE do sortowania wyników, a nie do wybierania wierszy - do tego potrzebny jest WHERE. Wariant z WHERE nazwisko IN "M%" używa operatora IN, który sprawdza, czy wartość należy do podanej listy (np. IN ("Kowalski","Nowak")), i nie rozumie wzorca z %. Dopasowanie po początku tekstu daje WHERE nazwisko LIKE "M%", dlatego to ono jest poprawne.