Dla których imion zastosowana w zapytaniu klauzula LIKE jest prawdziwa?
SELECT imie FROM mieszkancy WHERE imie LIKE '__a%';
A. Marek, Damian, Karol, Paweł
B. Ewa, Joanna, Kamil, Tamara
C. Adam, Ewa, Grażyna, Joanna
D. Anna, Agata, Alicja, Andrzej
Poprawna odpowiedź to Adam, Ewa, Grażyna, Joanna. W klauzuli LIKE wzorzec '__a%' oznacza: dwa dowolne pojedyncze znaki, następnie litera a, a potem dowolny ciąg znaków, także pusty. Znak _ w SQL zastępuje dokładnie jeden znak, natomiast % zastępuje zero, jeden lub wiele znaków. Dlatego pasują imiona, w których trzecim znakiem jest a: Adam ma układ A-d-a, Ewa ma E-w-a, Grażyna ma G-r-a, a Joanna ma J-o-a. Do zapamiętania: LIKE 'A%' szuka tekstów zaczynających się od A, LIKE '%a' kończących się na a, a LIKE '__a%' sprawdza konkretnie trzeci znak. Takie wzorce stosuje się przy filtrowaniu rekordów tekstowych, np. nazwisk, loginów lub kodów.
Tu decyduje dokładna pozycja litery a, a nie samo wystąpienie tej litery w imieniu. Wzorzec LIKE '__a%' wymaga, aby trzeci znak był literą a: dwa znaki zastępują dwa podkreślenia _, potem musi pojawić się a, a znak % dopuszcza dowolną dalszą część tekstu. Zestaw Anna, Agata, Alicja, Andrzej nie spełnia warunku jako całość: Agata pasuje, ale Anna ma trzeci znak n, Alicja ma trzeci znak i, a Andrzej ma trzeci znak d. Zestaw Marek, Damian, Karol, Paweł byłby bliższy wzorcowi sprawdzającemu drugą literę a, na przykład '_a%', ale nie warunkowi z trzecią literą a. Zestaw Ewa, Joanna, Kamil, Tamara zawiera imiona pasujące Ewa i Joanna, lecz Kamil oraz Tamara mają trzeci znak m. Poprawna odpowiedź to Adam, Ewa, Grażyna, Joanna. Typowy błąd polega na potraktowaniu % i _ jako podobnych symboli albo na sprawdzaniu, czy litera a występuje gdziekolwiek w tekście.