Jak działa REGEXP w języku SQL? Przykłady zastosowania

Jak działa REGEXP w języku SQL? Przykłady zastosowania

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 synonimu RLIKE.
  • 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:

  1. Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców, LIKE może być szybszym rozwiązaniem.
  2. Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
  3. 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:

  1. Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców, LIKE może być szybszym rozwiązaniem.
  2. Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
  3. 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:

  1. Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców, LIKE może być szybszym rozwiązaniem.
  2. Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
  3. 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:

  1. Unikaj REGEXP, gdy możesz użyć LIKE – jeśli nie potrzebujesz skomplikowanych wzorców, LIKE może być szybszym rozwiązaniem.
  2. Indeksowanie tekstu – REGEXP działa na pełnym skanowaniu tabeli, więc spróbuj indeksować kolumny dla lepszej wydajności.
  3. 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

KajoDataSpace