MySQL Samouczek dotyczący symboli wieloznacznych: Lubię, NIE lubię, Ucieczka, (% ), ( _ )
Jakie są MySQL Symbole wieloznaczne?
MySQL Symbole wieloznaczne są znakami, które pomagają wyszukiwać dane spełniające 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 się na SQL, możesz pomyśleć, że możesz wyszukiwać dowolne złożone dane za pomocą klauzuli SELECT i WHERE. Dlaczego więc używać symboli wieloznacznych?
Zanim odpowiemy na to pytanie, przyjrzyjmy się przykładowi. Załóżmy, że dział marketingu biblioteki wideo Myflix przeprowadził promocje marketingowe w mieście Teksas i chciałby uzyskać informacje zwrotne na temat liczby członków
Jeśli jesteś zarejestrowany w Teksasie, możesz użyć poniższego polecenia SELECT w połączeniu 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 GDZIE” staje się skomplikowane. 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 przekształcić zaawansowane wyszukiwarki w nasze aplikacje oparte na danych.
Rodzaje symboli wieloznacznych
% procent
% znak procentu służy do określenia wzorca zero (0) lub więcej znaków. Ma następującą podstawową składnię.
SELECT statements... WHERE fieldname LIKE 'xxx%';
TUTAJ
- "SELECT oświadczenie…” to standardowe polecenie SQL SELECT.
- „GDZIE” to słowo kluczowe używane 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 „%” odpowiada dowolnej liczbie znaków zaczynającej się od zera (0).
Aby w pełni docenić powyższe stwierdzenie, spójrzmy na praktyczny przykład
Załóżmy, że chcemy uzyskać wszystkie filmy, które mają w tytule słowo „kod”, użylibyśmy procentowego symbolu wieloznacznego, aby dopasować wzorzec po obu stronach słowa „kod”. Poniżej znajduje się instrukcja SQL, której można użyć do osiągnięcia pożądanych wyników.
SELECT * FROM movies WHERE title LIKE '%code%';
Wykonanie powyższego skryptu w MySQL Workbench przeciwko 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 na początku lub na końcu tytułu pojawi się słowo kluczowe wyszukiwania „code”, to i tak zostanie ono zwrócone w naszym zestawie wyników. Dzieje się tak dlatego, że nasz kod zawiera na początku dowolną liczbę znaków, a następnie dopasowuje się do wzorca „kod”, po którym następuje dowolna liczba znaków na końcu.
Zmodyfikujmy teraz powyższy skrypt tak, aby uwzględniał procentowy symbol wieloznaczny tylko na początku kryteriów wyszukiwania.
SELECT * FROM movies WHERE title LIKE '%code';
Wykonanie powyższego skryptu w MySQL workbench względem myflixdb daje nam wyniki pokazane poniżej.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Zauważ, że z bazy danych został zwrócony tylko jeden rekord. Dzieje się tak dlatego, że nasz kod dopasowuje dowolną liczbę znaków na początku tytułu filmu i pobiera tylko rekordy zakończone wzorcem „kod”.
Przesuńmy teraz symbol wieloznaczny procentu na koniec określonego wzorca, który ma zostać dopasowany. Zmodyfikowany skrypt jest pokazany poniżej.
SELECT * FROM movies WHERE title LIKE 'code%';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Zauważ, że z bazy danych został zwrócony tylko jeden rekord. Dzieje się tak, ponieważ nasz kod dopasowuje wszystkie tytuły rozpoczynające się od wzorca „code”, po którym następuje dowolna liczba znaków.
_ podkreślenie symbolu wieloznacznego
Do tego używany jest znak wieloznaczny podkreślenia dopasuj dokładnie jeden znak. 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ślonej karty wieloznacznej. Poniższy scenariusz wybiera wszystkie filmy, które ukazały się w roku „200x”
SELECT * FROM movies WHERE year_released LIKE '200_';
Wykonanie powyższego skryptu w MySQL workbench względem 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 zwrócone zostały tylko filmy, które mają 200 następujących po dowolnej postaci w roku wypuszczenia. Dzieje się tak, ponieważ znak wieloznaczny podkreślenia pasuje do wzorca 200, po którym następuje dowolny pojedynczy znak
Nie jak
Operatora logicznego NOT można używać razem z symbolami wieloznacznymi, aby zwracać wiersze, które nie pasują do określonego wzorca.
Załóżmy, że chcemy uzyskać filmy, które nie zostały wydane w roku 200x. Użylibyśmy operatora logicznego NOT wraz z symbolem wieloznacznym podkreślenia, aby uzyskać nasze wyniki. 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 w naszym zestawie wyników zwrócono tylko filmy, których rok wydania nie zaczyna się od 200. Dzieje się tak, ponieważ użyliśmy operatora logicznego NOT w naszym wyszukiwaniu wzorca wieloznacznego.
Słowo kluczowe ucieczki
Do tego używane jest słowo kluczowe ESCAPE wzór ucieczki dopasowujący znaki takie jak procent (%) i podkreślenie (_), jeśli stanowią część danych.
Załóżmy, że chcemy sprawdzić, czy możemy użyć ciągu „67%”;
LIKE '67#%%' ESCAPE '#';
Jeśli chcemy wyszukać film „67% Guilty”, możemy w tym celu skorzystać ze skryptu pokazanego poniżej.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Zwróć uwagę na podwójne „%%” w klauzuli LIKE, pierwsza na czerwono „%” jest traktowane jako część ciągu, który ma być przeszukany. Drugi służy do dopasowania dowolnej liczby następujących po sobie znaków.
To samo zapytanie zadziała również, jeśli użyjemy czegoś takiego
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Podsumowanie
- Lubię to i symbole wieloznaczne to potężne narzędzia, które pomagają w wyszukiwaniu danych odpowiadających złożonym wzorcom.
- Istnieje wiele symboli wieloznacznych, które obejmują wartość procentową, podkreślenie i listę znaków (nie są obsługiwane przez MySQL ) pośród innych
- Procentowy symbol wieloznaczny służy do dopasowania dowolnej liczby znaków, zaczynając od zera (0) i więcej.
- Znak wieloznaczny podkreślenia służy do dopasowania dokładnie jednego znaku.