Często, aby filtrować dane, będziemy musieli pobierać próbki nie według dokładnego dopasowania warunku, ale według wartości przybliżonej. To znaczy, gdy na przykład szukamy produktu, którego nazwa pasuje do określonego wzorca (wyrażenia regularnego) lub zawiera określone symbole lub słowa. Do takich celów służy operator LIKE w języku SQL, który wyszukuje wartości przybliżone. Do skonstruowania takiego wzorca wykorzystywane są metaznaki (znaki specjalne, służące do przeszukiwania części wartości), a mianowicie: „znak procentu” (%) lub gwiazdka (*), „podkreślenie” (_) lub „znak zapytania” (?) , „nawiasy kwadratowe” ([ ]).
Wybierzmy na przykład z naszej tabeli rekordy, które odnoszą się wyłącznie do produktów zawierających w nazwie słowo Narty. W tym celu stworzymy odpowiedni szablon:
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE '*Skis*'
Jak widać, DBMS wybrał tylko te rekordy, w których kolumna Produkt zawierała produkty zawierające słowo Narty.
Podkreślenie lub znak zapytania służy do zastąpienia pojedynczego znaku w słowie. Zastąpmy wszystkie samogłoski w słowie Bikes „znakiem zapytania” (?) i zobaczmy wynik:
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE 'B?k?s'
Metaznak nawiasu kwadratowego ([ ]) służy do jednoczesnego określenia zestawu znaków do wyszukiwania.
SELECT *
FROM Sumproduct
WHERE City LIKE '[TN]*'
W powyższym przykładzie wybraliśmy rekordy, w których nazwy miast zaczynają się na literę T lub N, w polu City.
Również w tym przypadku możemy użyć innego metaznaku, który działa odwrotnie. Dodajmy wykrzyknik (!) do naszego wyrażenia regularnego, co będzie oznaczać „nie równy” (dla MS Access) lub znak mocy (^) (dla innych DBMS).
SELECT *
FROM Sumproduct
WHERE City LIKE '[!TN]*'
Oznacza to, że ostatnie utworzone przez nas zapytanie zostanie odczytane w następujący sposób: wybierze wszystkie kolumny z tabeli Sumproduct i tylko te rekordy, w których nazwy miast w polu City nie zaczynają się na litery T lub N. Dodatkowo zauważamy, że zestaw liter w metaznaku „nawiasy kwadratowe” odpowiada tylko jednej pozycji w tekście.
Podobny wynik możemy uzyskać, jeśli zastosujemy już znany nam operator NOT, ale z wykrzyknikiem (!) rekord będzie krótszy.