MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak REGEXP_SUBSTR() działa w MariaDB

W MariaDB REGEXP_SUBSTR() funkcja zwraca podciąg pasujący do podanego wzorca wyrażenia regularnego.

Jeśli nie ma dopasowania (tj. ciąg wejściowy nie zawiera podciągu), wynikiem jest pusty ciąg.

Składnia

Składnia wygląda tak:

REGEXP_SUBSTR(subject,pattern)

Gdzie subject jest ciągiem wejściowym i pattern jest wzorcem wyrażenia regularnego dla podłańcucha.

Zwróć uwagę, że w chwili pisania tego tekstu wersja MariaDB funkcji REGEXP_SUBSTR() akceptuje mniej argumentów niż REGEXP_SUBSTR() MySQL . Wersja MySQL pozwala na podanie argumentów dla pozycji początkowej wyszukiwania, którego wystąpienia należy szukać, a także umożliwia doprecyzowanie wyrażenia regularnego.

Przykład

Oto podstawowy przykład:

SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd');

Wynik:

+--------------------------------------------+
| REGEXP_SUBSTR('Thailand and Laos', 'l.nd') |
+--------------------------------------------+
| land                                       |
+--------------------------------------------+

W tym przypadku występuje dopasowanie i podciąg jest zwracany.

Wiele meczów

Domyślnie, jeśli w ciągu jest wiele dopasowań, zwracane jest pierwsze z nich:

SELECT REGEXP_SUBSTR('Lend for land', 'l.nd');

Wynik:

+----------------------------------------+
| REGEXP_SUBSTR('Lend for land', 'l.nd') |
+----------------------------------------+
| Lend                                   |
+----------------------------------------+

Brak dopasowania

Oto przykład, w którym nie ma dopasowania:

SELECT REGEXP_SUBSTR('Lend for land', '^C');

Wynik:

+--------------------------------------+
| REGEXP_SUBSTR('Lend for land', '^C') |
+--------------------------------------+
|                                      |
+--------------------------------------+

Brak dopasowania, więc wynikiem jest pusty ciąg.

Wrażliwość na wielkość liter

REGEXP_SUBSTR() Funkcja jest zgodna z regułami rozróżniania wielkości liter efektywnego sortowania. Dopasowywanie jest wykonywane bez rozróżniania wielkości liter w przypadku sortowania bez rozróżniania wielkości liter oraz z rozróżnianiem wielkości liter w przypadku sortowania z rozróżnianiem wielkości liter i danych binarnych.

Oto przykład:

SELECT 
    REGEXP_SUBSTR('My Cats', 'c.t') AS "My Default",
    REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_ci, 'c.t') AS "Case Insensitive",
    REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_cs, 'c.t') AS "Case Sensitive";

Wynik:

+------------+------------------+----------------+
| My Default | Case Insensitive | Case Sensitive |
+------------+------------------+----------------+
| Cat        | Cat              |                |
+------------+------------------+----------------+

Moje domyślne sortowanie nie uwzględnia wielkości liter. Pozostałe dwa ciągi zostały zmuszone do sortowania bez rozróżniania wielkości liter i sortowania z rozróżnianiem wielkości liter.

Zapewnienie BINARY string uwzględnia również wielkość liter (patrz poniżej).

Ciągi binarne

Przekazywanie BINARY string wpływa również na rozróżnianie wielkości liter. Z BINARY ciągi znaków, znak z dużej litery jest inny niż jego odpowiednik z małej litery:

Przykład:

SELECT 
    REGEXP_SUBSTR('My Cats', 'c.t') AS "Character",
    REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary";

Wynik:

+-----------+--------+
| Character | Binary |
+-----------+--------+
| Cat       |        |
+-----------+--------+

Oto, co się stanie, jeśli zmienimy przypadek:

SELECT 
    REGEXP_SUBSTR('My Cats', 'C.t') AS "Character",
    REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary";

Wynik:

+-----------+--------+
| Character | Binary |
+-----------+--------+
| Cat       | Cat    |
+-----------+--------+

Argumenty zerowe

Przekazywanie null ponieważ dowolny argument daje wynik null :

SELECT 
    REGEXP_SUBSTR(null, 'c.t') AS "1",
    REGEXP_SUBSTR('Cat', null) AS "2",
    REGEXP_SUBSTR(null, null) AS "3";

Wynik:

+------+------+------+
| 1    | 2    | 3    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Niewłaściwa liczba argumentów

Przekazanie nieprawidłowej liczby argumentów lub brak argumentów skutkuje błędem:

SELECT REGEXP_SUBSTR('Cat');

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'REGEXP_SUBSTR'

  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 działa SECOND() w MariaDB

  2. Jak chronić bazę danych MySQL lub MariaDB przed wstrzyknięciem SQL:część druga

  3. MariaDB JSON_OBJECT() Objaśnienie

  4. Planowanie pojemności dla MySQL i MariaDB — wymiarowanie rozmiaru pamięci

  5. Uruchamianie MariaDB w konfiguracji chmury hybrydowej