W Oracle i innych relacyjnych bazach danych dopasowywanie wzorców jest popularną funkcją, która umożliwia wyszukiwanie wzorców ciągów przy użyciu specjalnych składni. Na przykład można wyszukać podłańcuch w dużym zestawie ciągów przy użyciu operatorów i funkcji dopasowujących wzorce.
Dzięki temu jest bardzo przydatny do budowania prostych klauzul wyszukiwania bez ponoszenia znacznych spadków wydajności w bazie danych.
W tym samouczku natkniesz się na operator LIKE w Oracle do wykonywania zapytań dopasowujących wzorce.
Operator Oracle LIKE
Operator LIKE w Oracle umożliwia wyszukanie określonego wzorca w danej kolumnie. Możesz na przykład użyć go do znalezienia wszystkich wierszy, w których imię klienta zaczyna się od wzorca „Ja”.
Ten operator często będzie używany w połączeniu z innymi klauzulami SQL, takimi jak klauzula WHERE, do filtrowania naszych wyników na podstawie określonego wzorca.
Możemy wyrazić składnię operatora LIKE w SQL, jak pokazano poniżej:
wyrażenie LIKE wzór [ UCIECZKA „znak_ucieczki” ]- Parametr wyrażenia określa kolumnę, którą chcesz przeszukać.
- Parametr pattern definiuje konkretny wzorzec, który chcesz wyszukać. Określony wzorzec może zawierać symbole wieloznaczne, takie jak % i _, aby dopasować odpowiednio dowolną liczbę znaków lub pojedynczy znak.
- Możemy również dołączyć klauzulę ESCAPE, aby określić znak ucieczki używany do wyszukiwania rzeczywistych znaków wieloznacznych.
Przykłady operatorów Oracle LIKE
Poniższe przykłady pokazują, jak używać operatora LIKE w tabeli Oracle.
Załóżmy, że mamy tabelę zawierającą informacje o kliencie, jak pokazano poniżej:
Przykład 1 – Używanie symboli wieloznacznych %
Możemy użyć symboli wieloznacznych %, aby dopasować dowolne ciągi składające się z zera lub większej liczby znaków. Na przykład możemy znaleźć wszystkie wpisy w tabeli zawierającej nazwę „Will%”.
Weź tabelę pracowników pokazaną poniżej:
wybierać imię, nazwisko, wynagrodzenieod PRACOWNIKÓW
gdzie FIRST_NAME lubi 'Wola%'
zamów według imienia;
Poprzednie zapytanie wybiera kolumny imię, nazwisko i wynagrodzenie z tabeli pracowników i porządkuje wynikowe wartości według kolumny imię.
Łączymy również klauzulę where w połączeniu z operatorem LIKE ze znakami wieloznacznymi %, aby pobrać tylko te wiersze, w których imię zaczyna się od „Will”.
To powinno zwrócić wiersze jako:
Możemy również użyć symbolu wieloznacznego %, aby pobrać wiersze, które kończą się określonym wzorcem.
Przykład jest pokazany poniżej:
wybierać imię, nazwisko, wynagrodzenieod PRACOWNIKÓW
gdzie FIRST_NAME lubi '%jest'
zamów według imienia;
W takim przypadku poprzednie zapytanie powinno zwrócić wszystkie wiersze, w których imię kończy się na „er”. Przykładowa wynikowa wartość jest pokazana poniżej:
Operator LIKE bazy danych Oracle domyślnie uwzględnia wielkość liter, dlatego należy o tym pamiętać podczas wyszukiwania określonych wzorców. Możesz użyć innych funkcji, takich jak dolna i górna, aby zanegować to zachowanie.
Przykład 2 – Użycie klauzuli ucieczki
Poniższy przykład ilustruje sposób użycia klauzuli ESCAPE w operatorze Oracle LIKE:
wybierać imię, nazwisko, wynagrodzenie, procent prowizjiod PRACOWNIKÓW
gdzie prowizja_pct jak 'dwadzieścia\%' ucieczka '\' ;
Poprzednie zapytanie wybiera kolumny imię, nazwisko, wynagrodzenie i procent prowizji z tabeli PRACOWNICY. Klauzula WHERE wykorzystuje operator LIKE z klauzulą ESCAPE do pobrania rekordów, w których kolumna Commission_pct zawiera ciąg znaków „20%” (z dosłownym znakiem %, a nie symbolem wieloznacznym).
W tym przypadku podczas wyszukiwania ciągu znaków 20% pomijamy znak % ukośnikiem odwrotnym (\). Pozwala to operatorowi LIKE wyszukać dokładny ciąg „20%” zamiast traktować znak % jako symbol wieloznaczny.
To zapytanie zwróci wszystkie wiersze z tabeli PRACOWNICY, w których kolumna prowizja_pct zawiera dokładny ciąg „20%”, wraz z kolumnami imię, nazwisko i wynagrodzenie dla tych wierszy.
Wniosek
W tym poście nauczyłeś się, jak używać operatora LIKE w bazach danych Oracle do wyszukiwania określonych wzorców w tabeli. Podano kilka przykładów wyróżniania za pomocą symboli wieloznacznych i klauzuli ESCAPE.