Czasami zdarza nam się, że chcemy wyszukać jakąś wartość ale do końca nie posiadamy dokładnej wartości. Np.:

  • Chcemy wyszukać klienta po nazwisku ale dokładnie nie pamiętamy czy nazywa Kowalski czy też Kowalczyk.
  • Potrzebujemy wyszukać numer rejestracyjny samochodu zaczynającego się na KR.

Jeżeli znamy jakiś wzorzec który możemy użyć aby odnaleźć cały wiersz lub jego część. Do takiego wyszukiwania wyników przeznaczone jest słowo kluczowe LIKE. Możemy go używać z polami znakowymi. Z polami zdefiniowanymi jako liczby całkowite, waluty, liczby dziesiętne lub zmiennopozycyjne takie wyszukiwanie nam nie zadziała.  Oto składnia:

Where nazwa kolumny (NOT) LIKE ’wzorzec’ (ESCAPE znak ucieczki)

Wzorzec musi być zawarty w cudzysłowie oraz zawierać jeden lub więcej znaków uniwersalnych. Używamy słowa kluczowego ESCAPE, kiedy wzorzec zawiera jeden ze znaków uniwersalnych, który musimy potraktować jako literał.

W SQL dostępne są dwa znaki uniwersalne, które możemy stosować z LIKE:

% – zastępuje on dowolny napis składający się z zera lub większej liczby znaków

_ – zastępuje jeden dowolny znak

SELECT nazwisko, imie

FROM klienci

WHERE nazwisko like ‚ko%’

Wynik:

select-likeTabela  Wynik zapytania SELECT z dopasowaniem wyniku LIKE

Zapytanie poszukuje nazwisk zaczynających się od liter „ko” i składającego się z dowolnej liczby znaków( Patrz powyżej). Możemy również zauważyć, że znaki uniwersalne umieszczone są wewnątrz cudzysłowów.

SELECT nazwisko, imie

FROM klienci

WHERE nazwisko like ‚%ow%’

Wynik:

select-like2Tabela  Wynik zapytania SELECT z dopasowaniem wyniku LIKE

Czasami zdarza się, że nie wiemy co jest na początku czy na końcu oraz nie wiemy czy na początku jest wielka czy mała litera. Możemy uwzględnić taką możliwość, nie umieszczając pierwszej litery we wzorcu tylko stosujemy same znaki uniwersalne na początku i końcu wzorca. Takie zapytanie pozwala nam wyszukać nazwisko nawet jeżeli nie znamy początkowej jaki i końcowej części nazwiska.( Patrz powyżej)

SELECT nazwisko, imie

FROM klienci

WHERE nazwisko like ‚_owalsk_’

Wynik:

select-like3Tabela Wynik zapytania SELECT z dopasowaniem wyniku LIKE

Jeżeli nie znamy brakujących znaków a znamy ich liczbę możemy zamiast brakującego znaku zastosować znak uniwersalny dla każdego znaku. W tym zapytaniu używamy znaku podkreślenia dla każdej brakującej litery (Patrz powyżej).

Znaków uniwersalnych możemy używać także z NOT LIKE. Kiedy byśmy chcieli znaleźć wszystkie nazwiska które nie zaczynają się na „Ko”.

SELECT nazwisko, imie

FROM klienci

WHERE  nazwisko not LIKE ‚ko%’

Znaków uniwersalnych używamy głownie ze słowem kluczowym LIKE. Bez słowa LIKE będą one traktowane dosłownie i traktowane jako wartość.

Dodaj komentarz