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%';
Wykonanie powyższego skryptu w MySQL workbench względem myflixdb daje nam wyniki pokazane poniżej.
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.