Co to są symbole wieloznaczne MySQL?
Symbole wieloznaczne MySQL to znaki ułatwiające wyszukiwanie danych spełniających złożone kryteria. Symbole wieloznaczne są używane w połączeniu z operatorem porównania LIKE lub operatorem porównania NOT LIKE.
Dlaczego warto używać symboli wieloznacznych?
Jeśli znasz język SQL, możesz pomyśleć, że możesz wyszukiwać dowolne złożone dane za pomocą klauzul SELECT i WHERE. Po co więc używać symboli wieloznacznych?
Zanim odpowiemy na to pytanie, spójrzmy na przykład. Załóżmy, że dział marketingu biblioteki wideo Myflix przeprowadził promocje marketingowe w Teksasie i chciałby uzyskać opinię na temat liczby członków
zarejestrowanej w Teksasie, możesz użyć poniższej instrukcji SELECT razem z klauzulą WHERE, aby uzyskać żądane informacje.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Jak widać z powyższego zapytania, „klauzula WHERE” staje się złożona. Jednak użycie symboli wieloznacznych upraszcza zapytanie, ponieważ możemy użyć czegoś prostego, takiego jak skrypt pokazany poniżej.
SELECT * FROM members WHERE postal_address like '% TX';
Krótko mówiąc, symbole wieloznaczne pozwalają nam rozwijać zaawansowane wyszukiwarki w naszych aplikacjach opartych na danych.
Rodzaje symboli wieloznacznych
% procent
% znak procentu służy do określenia wzorca składającego się z zera (0) lub większej liczby znaków . Ma następującą podstawową składnię.
SELECT statements… WHERE fieldname LIKE 'xxx%';
TUTAJ
- „Instrukcja SELECT…” jest standardowym poleceniem SQL SELECT.
- „GDZIE” to słowo kluczowe użyte do zastosowania filtra.
- „LIKE” to operator porównania używany w połączeniu z symbolami wieloznacznymi
- „xxx” to dowolny określony wzorzec początkowy, taki jak pojedynczy znak lub więcej, a „%” oznacza dowolną liczbę znaków zaczynających się od zera (0).
Aby w pełni docenić powyższe stwierdzenie, spójrzmy na praktyczny przykład
Załóżmy, że chcemy pobrać wszystkie filmy, które mają w tytule słowo „kod”, użylibyśmy symbolu wieloznacznego procentu, aby dopasować wzorzec po obu stronach słowa „kod”. Poniżej znajduje się instrukcja SQL, której można użyć, aby osiągnąć pożądane wyniki.
SELECT * FROM movies WHERE title LIKE '%code%';
Wykonanie powyższego skryptu w środowisku roboczym MySQL na myflixdb daje nam wyniki pokazane poniżej.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Zwróć uwagę, że nawet jeśli słowo kluczowe wyszukiwania „kod” pojawia się na początku lub na końcu tytułu, nadal jest zwracane w naszym zestawie wyników. Dzieje się tak, ponieważ nasz kod zawiera dowolną liczbę znaków na początku, a następnie dopasowuje wzorzec „kod”, po którym następuje dowolna liczba znaków na końcu.
Zmodyfikujmy teraz nasz powyższy skrypt, aby zawierał symbol wieloznaczny procentu tylko na początku kryteriów wyszukiwania.
SELECT * FROM movies WHERE title LIKE '%code';
Wykonanie powyższego skryptu w środowisku roboczym MySQL na myflixdb daje nam wyniki pokazane poniżej.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Zwróć uwagę, że z bazy danych został zwrócony tylko jeden rekord. Dzieje się tak, ponieważ nasz kod dopasowuje dowolną liczbę znaków na początku tytułu filmu i pobiera tylko rekordy kończące się wzorcem „kod”.
Teraz przesuńmy procentowy symbol wieloznaczny na koniec określonego wzorca, który ma zostać dopasowany. Zmodyfikowany skrypt pokazano poniżej.
SELECT * FROM movies WHERE title LIKE 'code%';Wykonanie powyższego skryptu w środowisku roboczym MySQL na myflixdb daje nam wyniki pokazane poniżej.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Zwróć uwagę, że z bazy danych został zwrócony tylko jeden rekord. Dzieje się tak, ponieważ nasz kod pasuje do wszystkich tytułów, które rozpoczynają się od wzorca „kod”, po którym następuje dowolna liczba znaków.
_ podkreślenie wieloznaczne
Podkreślenie wieloznaczne służy do dopasowania dokładnie jednego znaku . Załóżmy, że chcemy wyszukać wszystkie filmy, które zostały wydane w latach 200x, gdzie x to dokładnie jeden znak, który może mieć dowolną wartość. Aby to osiągnąć, użylibyśmy podkreślenia dzikiej karty. Poniższy skrypt wybiera wszystkie filmy, które zostały wydane w roku „200x”
SELECT * FROM movies WHERE year_released LIKE '200_';
Wykonanie powyższego skryptu w środowisku roboczym MySQL na myflixdb daje nam wyniki pokazane poniżej.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Zwróć uwagę, że w naszym zestawie wyników zostały zwrócone tylko filmy, w których występuje 200 następujących po każdym znaku w wydanym polu roku. Dzieje się tak, ponieważ znak podkreślenia pasował do wzorca 200, po którym następuje dowolny pojedynczy znak
Nie jak
Operator logiczny NOT może być używany razem z symbolami wieloznacznymi w celu zwrócenia wierszy, które nie pasują do określonego wzorca.
Załóżmy, że chcemy uzyskać filmy, które nie zostały wydane w roku 200x. Aby otrzymać wyniki, użylibyśmy operatora logicznego NOT razem z podkreśleniem wieloznacznym. Poniżej znajduje się skrypt, który to robi.
SELECT * FROM movies WHERE year_released NOT LIKE '200_';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
8 | Underworld-Awakeninh | Michahel Eal | 2012 | 6 |
Zauważ, że tylko filmy, które nie zaczynają się od 200 w roku wydania, zostały zwrócone w naszym zestawie wyników. Dzieje się tak, ponieważ użyliśmy operatora logicznego NOT w naszym wyszukiwaniu wzorca wieloznacznego.
Słowo kluczowe Escape.
Słowo kluczowe ESCAPE jest używane do zmiany znaczenia znaków dopasowania wzorca, takich jak procent (%) i podkreślenie (_), jeśli stanowią one część danych.
Załóżmy, że chcemy sprawdzić ciąg „67%”, którego możemy użyć;
LIKE '67#%%' ESCAPE '#';
Jeśli chcemy wyszukać film „67% Guilty”, możemy to zrobić za pomocą poniższego skryptu.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Zwróć uwagę na podwójny „ %% ” w klauzuli LIKE, pierwszy zaznaczony na czerwono „ % ” jest traktowany jako część szukanego ciągu. Drugi służy do dopasowania dowolnej liczby następnych znaków.
To samo zapytanie zadziała również, jeśli użyjemy czegoś takiego jak
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Podsumowanie
- Potężne narzędzia Like & Wildcards, które pomagają wyszukiwać dane według złożonych wzorców.
- Istnieje wiele symboli wieloznacznych, które obejmują między innymi procent, podkreślenie i listę znaków (nie są obsługiwane przez MySQL)
- Procentowy symbol wieloznaczny służy do dopasowania dowolnej liczby znaków, zaczynając od zera (0) i więcej.
- Podkreślenie wieloznaczne służy do dopasowania dokładnie jednego znaku.