
Jeśli kiedykolwiek przyszło Ci szukać bardziej zaawansowanych sposobów filtrowania danych w SQL, to na pewno natrafiłeś na REGEXP. To potężne narzędzie umożliwia korzystanie z wyrażeń regularnych, które pozwalają na wyszukiwanie skomplikowanych wzorców w tekstach. W tym artykule dokładnie przyjrzę się, jak działa REGEXP w języku SQL, przedstawię składnię, przykłady zastosowania i kilka przydatnych trików.
Co to jest REGEXP w SQL?
REGEXP, czyli regular expressions (wyrażenia regularne), to metoda dopasowywania wzorców w tekstach. W SQL można je wykorzystywać do wyszukiwania wartości w kolumnach tekstowych, które spełniają określone kryteria.
Najczęściej REGEXP jest używany w klauzulach WHERE
do filtrowania wyników. Jego działanie polega na sprawdzaniu, czy wartość pasuje do podanego wyrażenia regularnego. Wynik to wartość logiczna – TRUE
lub FALSE
.
Składnia REGEXP w SQL
Najprostsza forma użycia REGEXP wygląda następująco:
SELECT * FROM tabela WHERE kolumna REGEXP 'wzorzec';
W zależności od bazy danych stosuje się nieco różne słowa kluczowe:
- W MySQL i MariaDB używamy
REGEXP
lub jego synonimuRLIKE
. - W PostgreSQL stosuje się
~
(dopasowanie uwzględniające wielkość liter) oraz~*
(ignorowanie wielkości liter).
Operatory i znaki specjalne w REGEXP
Aby skutecznie używać REGEXP, warto znać podstawowe operatory:
Operator | Opis | Przykład |
---|---|---|
. |
Dopasowuje dowolny pojedynczy znak | a.c znajdzie „abc” i „aac” |
^ |
Początek ciągu | ^A znajdzie „Adam” ale nie „BAdaNia” |
$ |
Koniec ciągu | c$ znajdzie „Abc” ale nie „Abca” |
[abc] |
Dopasuje jeden z podanych znaków | b[aeiou]t znajdzie „bat”, „bet”, „bit”, itd. |
* |
Zero lub więcej wystąpień | ab* znajdzie „a”, „ab”, „abb” itd. |
+ |
Co najmniej jedno wystąpienie | go+d znajdzie „god” i „good”, ale nie „gd” |
| |
Alternatywa (lub) | ab|cd znajdzie „ab” lub „cd” |
Przykłady zastosowania wyrażeń regularnych w SQL
Oto kilka praktycznych przykładów zastosowania REGEXP w SQL.
1. Wyszukiwanie nazw zaczynających się od określonej litery
SELECT * FROM users WHERE name REGEXP '^M';
Ten zapis znajdzie wszystkich użytkowników, których imię zaczyna się na literę „M”.
2. Znalezienie adresów e-mail w określonej domenie
SELECT * FROM emails WHERE address REGEXP '@gmail\\.com
Ten wzorzec odnajdzie wszystkie adresy e-mail zakończone na @gmail.com
.
3. Wyszukiwanie numerów telefonów w określonym formacie
SELECT * FROM contacts WHERE phone REGEXP '^[0-9]{3}-[0-9]{3}-[0-9]{4}
To wyrażenie znajdzie tylko numery telefonów w formacie XXX-XXX-XXXX
.
4. Wyszukiwanie słów zawierających określony zbiór liter
SELECT * FROM dictionary WHERE word REGEXP '[aeiou]{2}';
Ten przykład odnajdzie wszystkie słowa zawierające dwie samogłoski obok siebie.
Przydatne triki i optymalizacja zapytań z REGEXP
Używanie REGEXP jest bardzo wygodne, ale może mieć pewne konsekwencje dotyczące wydajności. Oto kilka wskazówek, jak optymalizować zapytania:
- Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców,
LIKE
może być szybszym rozwiązaniem. - Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
- Zamiast REGEXP, spróbuj warunków OR – w niektórych przypadkach kilka warunków
OR
może działać wydajniej niż jeden REGEXP.
Podsumowanie
REGEXP w SQL to potężne narzędzie umożliwiające wyszukiwanie złożonych wzorców w danych tekstowych. Dzięki znajomości podstawowych operatorów, możemy precyzyjnie filtrować rekordy w bazie danych, wykonując operacje, które byłyby trudne lub niemożliwe przy wykorzystaniu zwykłego LIKE
. Mimo że REGEXP oferuje dużą elastyczność, warto pamiętać o optymalizacji, zwłaszcza w przypadku dużych zbiorów danych.
„`
;
Ten wzorzec odnajdzie wszystkie adresy e-mail zakończone na @gmail.com
.
3. Wyszukiwanie numerów telefonów w określonym formacie
To wyrażenie znajdzie tylko numery telefonów w formacie XXX-XXX-XXXX
.
4. Wyszukiwanie słów zawierających określony zbiór liter
Ten przykład odnajdzie wszystkie słowa zawierające dwie samogłoski obok siebie.
Przydatne triki i optymalizacja zapytań z REGEXP
Używanie REGEXP jest bardzo wygodne, ale może mieć pewne konsekwencje dotyczące wydajności. Oto kilka wskazówek, jak optymalizować zapytania:
- Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców,
LIKE
może być szybszym rozwiązaniem. - Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
- Zamiast REGEXP, spróbuj warunków OR – w niektórych przypadkach kilka warunków
OR
może działać wydajniej niż jeden REGEXP.
Podsumowanie
REGEXP w SQL to potężne narzędzie umożliwiające wyszukiwanie złożonych wzorców w danych tekstowych. Dzięki znajomości podstawowych operatorów, możemy precyzyjnie filtrować rekordy w bazie danych, wykonując operacje, które byłyby trudne lub niemożliwe przy wykorzystaniu zwykłego LIKE
. Mimo że REGEXP oferuje dużą elastyczność, warto pamiętać o optymalizacji, zwłaszcza w przypadku dużych zbiorów danych.
„`
;
To wyrażenie znajdzie tylko numery telefonów w formacie XXX-XXX-XXXX
.
4. Wyszukiwanie słów zawierających określony zbiór liter
Ten przykład odnajdzie wszystkie słowa zawierające dwie samogłoski obok siebie.
Przydatne triki i optymalizacja zapytań z REGEXP
Używanie REGEXP jest bardzo wygodne, ale może mieć pewne konsekwencje dotyczące wydajności. Oto kilka wskazówek, jak optymalizować zapytania:
- Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców,
LIKE
może być szybszym rozwiązaniem. - Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
- Zamiast REGEXP, spróbuj warunków OR – w niektórych przypadkach kilka warunków
OR
może działać wydajniej niż jeden REGEXP.
Podsumowanie
REGEXP w SQL to potężne narzędzie umożliwiające wyszukiwanie złożonych wzorców w danych tekstowych. Dzięki znajomości podstawowych operatorów, możemy precyzyjnie filtrować rekordy w bazie danych, wykonując operacje, które byłyby trudne lub niemożliwe przy wykorzystaniu zwykłego LIKE
. Mimo że REGEXP oferuje dużą elastyczność, warto pamiętać o optymalizacji, zwłaszcza w przypadku dużych zbiorów danych.
„`
;
Ten wzorzec odnajdzie wszystkie adresy e-mail zakończone na @gmail.com
.
3. Wyszukiwanie numerów telefonów w określonym formacie
To wyrażenie znajdzie tylko numery telefonów w formacie XXX-XXX-XXXX
.
4. Wyszukiwanie słów zawierających określony zbiór liter
Ten przykład odnajdzie wszystkie słowa zawierające dwie samogłoski obok siebie.
Przydatne triki i optymalizacja zapytań z REGEXP
Używanie REGEXP jest bardzo wygodne, ale może mieć pewne konsekwencje dotyczące wydajności. Oto kilka wskazówek, jak optymalizować zapytania:
- Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców,
LIKE
może być szybszym rozwiązaniem. - Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
- Zamiast REGEXP, spróbuj warunków OR – w niektórych przypadkach kilka warunków
OR
może działać wydajniej niż jeden REGEXP.
Podsumowanie
REGEXP w SQL to potężne narzędzie umożliwiające wyszukiwanie złożonych wzorców w danych tekstowych. Dzięki znajomości podstawowych operatorów, możemy precyzyjnie filtrować rekordy w bazie danych, wykonując operacje, które byłyby trudne lub niemożliwe przy wykorzystaniu zwykłego LIKE
. Mimo że REGEXP oferuje dużą elastyczność, warto pamiętać o optymalizacji, zwłaszcza w przypadku dużych zbiorów danych.
Inny ciekawy artykuł:
Jak działa ILIKE w języku SQL? Przykłady zastosowania
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.