Dla których imion klauzula LIKE jest prawdziwa?
SELECT imie FROM mieszkancy WHERE imie LIKE 'm_r%';
A. Marek, Marta, Monika
B. Mariola, Mira, Michał
C. Marek, Marta, Mirosław
D. Maria, Mariusz, Mateusz
Poprawna odpowiedź to Marek, Marta, Mirosław. W wyrażeniu LIKE 'm_r%' znak m oznacza konkretną literę na początku tekstu, znak _ zastępuje dokładnie jeden dowolny znak, litera r musi wystąpić jako trzeci znak, a % oznacza dowolny dalszy ciąg znaków, także pusty. Dlatego pasują imiona mające układ: pierwsza litera m/M, druga dowolna, trzecia r, a potem dowolna liczba znaków. Marek ma wzór M-a-r-..., Marta ma M-a-r-..., a Mirosław ma M-i-r-.... LIKE stosuje się w SQL do wyszukiwania tekstów według wzorca, np. fragmentu nazwiska lub początku kodu. Typowa pułapka: _ i % nie znaczą tego samego - _ zastępuje jeden znak, a % wiele znaków.
W tym wzorcu decyduje pozycja liter, a nie samo wystąpienie litery r gdziekolwiek w imieniu. LIKE 'm_r%' oznacza: na początku m/M, potem dokładnie jeden dowolny znak, następnie r, a dalej dowolny ciąg znaków. Poprawna odpowiedź to Marek, Marta, Mirosław. Zestaw Marek, Marta, Monika nie spełnia warunku, ponieważ Monika ma trzecią literę n, a nie r. Zestaw Mariola, Mira, Michał zawiera imiona Mariola i Mira pasujące do wzorca, ale Michał ma trzecią literę c. Zestaw Maria, Mariusz, Mateusz także nie jest cały zgodny z warunkiem, bo Maria i Mariusz pasują, natomiast Mateusz ma układ M-a-t-..., więc odpada. Typowy błąd polega na traktowaniu znaku _ jak %, czyli jak dowolnie długiego fragmentu tekstu. W SQL te symbole mają różne znaczenie: _ to dokładnie jeden znak, % to zero lub więcej znaków.