Problem:
Chcesz znaleźć podciąg pasujący do wzorca w ciągu.
Przykład:
Nasza baza danych zawiera tabelę o nazwie klient z danymi w następujących kolumnach:id , first_name , last_name i city .
| id | imię | nazwisko | miasto |
|---|---|---|---|
| 1 | Alan | Watson | Madryt |
| 2 | Lisa | Czarny | Singapur |
| 3 | Laura | Williams | Seattle |
| 4 | Mediolan | Cegła | Seul |
Zobaczmy kilka przykładów dopasowania wzorców w SQL.
Przykład 1:
Wyświetlmy imię, nazwisko i miasto każdego klienta, którego nazwa miasta zaczyna się na literę „S”.
Rozwiązanie:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
| nazwisko | imię | miasto |
|---|---|---|
| Lisa | Czarny | S zignorować |
| Mediolan | Cegła | S eul |
| Laura | Williams | S jedzenie |
Użyliśmy symbolu wieloznacznego %, który reprezentuje zero lub więcej nieznanych znaków. Tego symbolu wieloznacznego można użyć w dowolnym miejscu ciągu.
Przykład 2:
Pokażmy imię, nazwisko i miasto każdego klienta, którego nazwa miasta zawiera dokładnie pięć znaków.
Rozwiązanie:
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Oto wynik:
| nazwisko | imię | miasto |
|---|---|---|
| Mediolan | Cegła | Seul |
Symbol wieloznaczny podkreślenia może służyć do reprezentowania pojedynczego nieznanego znaku. Tak więc, używając pięciu z nich z rzędu, możemy reprezentować wszystkie łańcuchy o długości pięciu znaków. W naszym przykładzie jedynym miastem pasującym do tego opisu jest Seul.
Przykład 3:
Pokażmy imię, nazwisko i miasto każdego klienta, którego miasto zaczyna się na literę „S” i ma literę „o” jako przedostatni znak.
Rozwiązanie:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Oto wynik:
| nazwisko | imię | miasto |
|---|---|---|
| Lisa | Czarny | S ingapo ponownie |
| Mediolan | Cegła | S eo ul |
Zapytanie zwróciło tylko dwa rekordy:Lisa Black z S ingapo re i Milan Brick z S eo ul. Te miasta pasują do podanego wzorca. Tutaj połączyliśmy oba symbole wieloznaczne, aby wygenerować bardziej konkretny wzorzec:wszystkie ciągi zaczynające się wielką literą „S” i zawierające dowolną liczbę innych znaków po niej, o ile trzeci znak jest małą literą „o”. '
Dyskusja:
Jeśli chcesz wybrać rekordy, w których ciąg pasuje do określonego wzorca, możesz użyć LIKE klauzula jako warunek w WHERE klauzula. Po WHERE , podaj nazwę kolumny (np. city ), po którym następuje LIKE klauzula określająca wzorzec ciągu (np. 'S%o__' ) do wyszukania.
Jak widzieliśmy w przykładach, możesz użyć dwóch znaków specjalnych znanych jako wildcards do reprezentowania nieznanych postaci:
- Symbol wieloznaczny „%” oznacza zero lub więcej znaków.
- Symbol wieloznaczny „_” oznacza dowolny pojedynczy znak.
Możesz połączyć te symbole wieloznaczne, aby osiągnąć naprawdę potężne wyniki. Możesz także połączyć więcej niż jeden LIKE stan :schorzenie. Na koniec możesz użyć NOT operator, aby znaleźć ciągi, których nie pasują do podanego wzorca.