W SQL do wyszukiwania tekstu według wzorca stosuje się operator LIKE. W najczęściej spotykanej składni:
- % oznacza dowolny ciąg znaków o długości 0 lub większej,
- _ oznacza dokładnie jeden dowolny znak.
Pytanie wymaga, aby nazwisko:
- zaczynało się od litery Z,
- miało co najmniej 1 znak (czyli dopuszcza również nazwisko jednoliterowe).
Wzorzec 'Z%' spełnia oba warunki: pierwszy znak to "Z", a "%" może być pusty (wtedy dopasuje "Z") albo zawierać kolejne znaki (wtedy dopasuje np. "Zalewski", "Zięba"). Dlatego zapytanie:
SELECT nazwisko FROM klient WHERE nazwisko LIKE 'Z%';
jest poprawne.
Dlaczego pozostałe propozycje są niepoprawne w typowym, przenośnym SQL?
- nazwisko='Z_?' oraz nazwisko='Z?': używają operatora =, który sprawdza ścisłą równość całego łańcucha, a znaki "_" i "?" nie będą interpretowane jako wildcardy. Dodatkowo "?" nie jest standardowym symbolem w LIKE.
- nazwisko LIKE 'Z_%': znak "_" wymusza co najmniej jeden znak po "Z", więc minimalna długość dopasowania to 2 znaki. To wyklucza nazwisko jednoliterowe "Z", a pytanie dopuszcza minimum jednoliterowe.
Wskazówka egzaminacyjna: zawsze sprawdzaj, czy wzorzec dopuszcza przypadek graniczny (tu: długość 1) oraz czy użyto właściwego operatora (LIKE zamiast =).