Inne działy

 

 

MySQL operator LIKE wybieranie danych

w oparciu o pasujący wzorzec

 

Podsumowanie: MySQL zapewnia operator LIKE w standardzie SQL .MySQL operator LIKE  jest powszechnie używany do wybierania danych w oparciu o wzorce dopasowania. Operatora LIKE należy uzywać w odpowiedni sposób, jest to niezbędne w celu zwiększenia wydajności aplikacji. W tym poradniku dowiesz się, jak korzystać z MySQL LIKE i kiedy unikać używania go w celu zmniejszenia prędkości pobierania danych z tabeli bazy danych.

MySQL LIKE umożliwia przeprowadzenie dopasowywania wzorców w kolumnie znaków w tabeli bazy danych. MySQL LIKE jest często używany z SELECT w klauzuli WHERE. MySQL zapewnia dwa symbole wieloznaczne do korzystanie z LIKE, % procent i  znak podkreślenia (_).

  • Znak procent (%) maska pozwala zastąpić dowolny ciąg zero lub więcej znaków
  • Znak podkreślenia (_) pozwala zastąpić dowolny pojedynczy znak.

 Jak wiemy najlepsza jest praktyka, więc poćwiczmy z operatorem LIKE wykonując kilka przykładów.

Załóżmy, że chcesz wyszukać pracowników w tabeli pracownicy, których imię rozpoczyna się znakiem 'a', możemy to zrobić w następujący sposób:

SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE imie LIKE 'A%'

 

MySQL przeszukuję całą tabelę pracownicy celu wyszukania pracowników, którzy mają imię zaczynające się od znaku 'a', a następnie mają dowolną liczbę znaków.

Aby wyszukać wszystkich pracowników, których nazwiska kończą się na 'na' można wykonać zapytanie w następujący sposób:

SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE imie LIKE '%on'

Jeśli chcesz odszukać dany ciąg znaków, który znajduję się w środku słowa, możesz umieścić znak procentu na początku i na końcu, aby znaleźć poszukiwany ciąg znaków. Na przykład, jeśli chcesz znaleźć wszystkich pracowników, których nazwisko zawiera znaki 'on' możesz wykonać następujące zapytanie:

SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE imie LIKE '%on%'

 

Aby wyszukać wszystkich pracowników, których nazwiska są jak Byk, Bok. Możesz użyć znaku dolnego podkreślenia (_):

SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE nazwisko LIKE 'B_k'

 

MySQL wraz z operatorem LIKE umożliwia stosowanie przeczenia NOT, aby zaleźć wszystkie ciągi znaków, które nie są dopasowane do określonego wzorca. Załóżmy, że chcesz wyszukać wszystkich pracowników, których nazwisko nie zaczyna się od znaku 'B', możesz użyć następującego zapytania:

SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE nazwisko NOT LIKE 'B%'

Należy zauważyć, że operator LIKE nie rozróżnia wielkości liter, tak więc 'b%' i 'B%' są takie same.

Co, jeśli chcesz wyszukać rekordy, które mają początek zaczynający się od znaku wieloznacznego? W tym przypadku można użyć słowa ESCAPE(\), aby pokazać, że symbole wieloznaczne mają swoje dosłowne znaczenie. Znakiem ucieczki w MySQL jest domyślnie znak \. Na przykład, jeżeli chcesz znaleźć wszystkie produkty, których kod zaczyna się od _20, można wykonać następujące zapytanie:

SELECT kod_produktu, nazwa_produktu
FROM produkty
WHERE kod_produktu LIKE '%\_20%'

 

MySQL LIKE daje wygodny sposób, aby znaleźć rekordy, które mają ciąg znaków dopasować do podanego wzorca. Ponieważ MySQL LIKE skanuje całą tabelę, by znaleźć wszystkie rekordy pasujące dlatego nie pozwala silnik bazy danych użyć indeksu do szybkiego wyszukiwania. Gdy danych w tabeli jest wystarczająco dużo, wydajność MySQL będzie maleć. W niektórych przypadkach można uniknąć tego problemu za pomocą innych technik, aby osiągnąć ten sam rezultat jak MySQL LIKE. Na przykład, jeśli chcesz znaleźć wszystkich pracowników, którzy mają imię zaczynające się od określonego ciągu można użyć funkcji LEFT w którym klauzula wygląda jak poniżej:

SET @str = 'b';
SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE LEFT(nazwisko, lenght(@str)) = @str;

Zwraca taki sam wynik jak zapytanie poniżej, ale szybciej, ponieważ możemy wykorzystać indeks na kolumnie nazwisko.

SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE nazwisko LIKE 'B%'

 

I jeszcze technika, aby znaleźć cały ciąg znaków, który znajduję się na końcu określonego ciągu znaków możemy uzyć funkcji RIGHT zamiast operatora LIKE w następujący sposób:

SET @str = 'on';
SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE RIGHT(nazwisko, lenght(@str)) = @str;

Zwraca taki sam wynik jak następująca kwerenda:

SELECT numer_pracownika, nazwisko, imie
FROM pracownicy
WHERE nazwisko LIKE '%on'

 

 

 

 

Zobacz nasze wszystkie kursy

WWW


HTML
HTML - Znaczniki
CSS - Tutorial
CSS - Selektory
PHP
JavaScript

XML

XSLT

Bazy danych


SQL
SQLite
MySQL
PostgreSQL

 

 

Programowanie


C
C++
C#
Java
VisualBasic
Python

Linux


Podstawy Linuxa
Bash
Linuks artykuły

Windows


Excel funkcje
Windows wskazówki
Outlook

Pozotałe działy


Programy
Rozrywka

 

 

 

This email address is being protected from spambots. You need JavaScript enabled to view it.