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.