Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak działa funkcja REGEXP_LIKE() w MySQL

W MySQL funkcja REGEXP_LIKE() funkcja służy do określenia, czy ciąg znaków pasuje do wyrażenia regularnego.

Funkcja zwraca 1 jeśli ciąg pasuje do podanego wyrażenia regularnego i 0 jeśli nie.

Składnia

Składnia wygląda tak:

REGEXP_LIKE(expr, pat[, match_type])

Gdzie expr jest ciągiem wejściowym i pat jest wyrażeniem regularnym, względem którego testujesz ciąg.

Opcjonalny match_type argument umożliwia doprecyzowanie wyrażenia regularnego. Na przykład możesz użyć match_type określić dopasowanie z uwzględnieniem wielkości liter, czy nie.

Przykład 1 – Podstawowe użycie

Oto podstawowy przykład:

SELECT REGEXP_LIKE('Cat', '.*') Result;

Wynik:

+--------+
| Result |
+--------+
|      1 |
+--------+

W tym przypadku nasze wyrażenie regularne określa dowolny znak w dowolnej sekwencji, więc oczywiście otrzymujemy dopasowanie. Funkcja zwraca 1 aby wskazać dopasowanie.

Przykład 2 – Brak dopasowania

Oto przykład, w którym ciąg wejściowy nie pasuje do wyrażenia regularnego:

SELECT REGEXP_LIKE('Cat', 'b+') Result;

Wynik:

+--------+
| Result |
+--------+
|      0 |
+--------+

W tym przypadku nasze wyrażenie regularne określa, że ​​powinien istnieć jeden lub więcej b znaki w dowolnej kolejności. Nasz ciąg wejściowy nie zawiera tego znaku, więc 0 jest zwracany.

Przykład 3 – Dopasuj początek ciągu

Oto przykład, w którym wyrażenie regularne określa, że ​​ciąg musi zaczynać się od określonych znaków:

SELECT REGEXP_LIKE('Cat', '^Ca') Result;

Wynik:

+--------+
| Result |
+--------+
|      1 |
+--------+

A oto, co się stanie, jeśli nie ma dopasowania:

SELECT REGEXP_LIKE('Cat', '^Da') Result;

Wynik:

+--------+
| Result |
+--------+
|      0 |
+--------+

Przykład 4 – Zapytanie do bazy danych

Ta funkcja może być używana w WHERE klauzula zapytań do bazy danych, aby zwrócić tylko te wiersze, które zawierają wzorzec:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

Wynik:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Oto pełna tabela:

SELECT AlbumId, AlbumName
FROM Albums;

Wynik:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

Przykład 5 – match_type Argument

Możesz podać dodatkowy argument, aby określić typ dopasowania. Pozwala to określić takie rzeczy, jak rozróżnianie wielkości liter w dopasowaniu, uwzględnienie terminatorów linii itp.

Oto przykład określenia dopasowania z rozróżnianiem wielkości liter i dopasowania bez rozróżniania wielkości liter:

SELECT 
  REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
  REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

Wynik:

+----------------+------------------+
| Case-Sensitive | Case-Insensitive |
+----------------+------------------+
|              0 |                1 |
+----------------+------------------+

match_type argument może zawierać następujące znaki:

c
Rozróżnianie wielkości liter.
i
Dopasowywanie bez rozróżniania wielkości liter.
m
Tryb wielowierszowy. Rozpoznaj terminatory wiersza w ciągu. Domyślnym zachowaniem jest dopasowywanie terminatorów linii tylko na początku i na końcu wyrażenia łańcuchowego.
n
. znak pasuje do terminatorów linii. Wartość domyślna to . dopasowanie, aby zatrzymać się na końcu linii.
u
Zakończenia linii tylko dla Uniksa. Tylko znak nowej linii jest rozpoznawany jako linia kończąca się . , ^ i $ operatory dopasowania.

Więcej przykładów

Możesz zobaczyć więcej przykładów podstawowych wyrażeń regularnych w MySQL REGEXP Przykłady. REGEXP jest synonimem REGEXP_LIKE() , więc możesz używać przykładów zamiennie.

Zobacz także składnię wyrażeń regularnych w dokumentacji MySQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać liczbę bitów w ciągu w MySQL — BIT_LENGTH()

  2. Błąd przygotowanej instrukcji mysql:MySQLSyntaxErrorException

  3. MySQL:Kod błędu:1118 Zbyt duży rozmiar wiersza (> 8126). Zmiana niektórych kolumn na TEKST lub BLOB

  4. MySQL – Naprawa – Błąd – Twoje hasło nie spełnia aktualnych wymagań politycznych

  5. Używanie strtotime dla dat sprzed 1970