Samouczek dotyczący symboli wieloznacznych MySQL: Lubię, NIE lubię, Escape, (%), (_)

Spisie treści:

Anonim

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.