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

Jak działa funkcja REGEXP_SUBSTR() w MySQL

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

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

Składnia

Składnia wygląda tak:

REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]])

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

Opcjonalny pos argument pozwala określić pozycję w ciągu, aby rozpocząć wyszukiwanie. Jeśli zostanie pominięty, zaczyna się od pozycji 1.

Opcjonalne occurrence argument pozwala określić, które wystąpienie dopasowania ma zostać wyszukane. W przypadku pominięcia używane jest pierwsze wystąpienie (wystąpienie 1).

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

Przykład 1 – Podstawowe użycie

Oto podstawowy przykład:

SELECT REGEXP_SUBSTR('Thailand or Cambodia', 'l.nd') Result;

Wynik:

+--------+
| Result |
+--------+
| land   |
+--------+

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

Przykład 2 – Wiele meczów

Domyślnie, jeśli w ciągu jest wiele dopasowań, zwracane jest pierwsze z nich (chociaż w razie potrzeby możesz określić inne wystąpienie. Wkrótce do tego dojdziemy):

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

Wynik:

+--------+
| Result |
+--------+
| Lend   |
+--------+

Przykład 3 – Brak dopasowania

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

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

Wynik:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Brak dopasowania, więc wynik to NULL .

Przykład 4 – pos Argument

Oto przykład określenia pozycji początkowej:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Result;

Wynik:

+--------+
| Result |
+--------+
| Cut    |
+--------+

Zaczęliśmy od pozycji 2, która pojawia się po rozpoczęciu pierwszego wystąpienia, więc zamiast tego zwracane jest następne wystąpienie.

Oto kolejny przykład:

SELECT 
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1) 'Pos 1',
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) 'Pos 2',
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 6) 'Pos 6';

Wynik:

+-------+-------+-------+
| Pos 1 | Pos 2 | Pos 6 |
+-------+-------+-------+
| Cat   | Cut   | Cot   |
+-------+-------+-------+

Przykład 5 – occurrence Argument

Oto przykład użycia occurrence argument. We wszystkich przypadkach zaczynamy od pozycji 1:

SELECT 
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Occurrence 1',
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Occurrence 2',
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Occurrence 3';

Wynik:

+--------------+--------------+--------------+
| Occurrence 1 | Occurrence 2 | Occurrence 3 |
+--------------+--------------+--------------+
| Cat          | Cut          | Cot          |
+--------------+--------------+--------------+

Jeśli jednak zaczniemy od innej pozycji, wynik będzie inny:

SELECT 
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Occurrence 1',
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Occurrence 2',
  REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Occurrence 3';

Wynik:

+--------------+--------------+--------------+
| Occurrence 1 | Occurrence 2 | Occurrence 3 |
+--------------+--------------+--------------+
| Cut          | Cot          | NULL         |
+--------------+--------------+--------------+

Stało się tak, ponieważ nasza pozycja wyjściowa pojawiła się po rozpoczęciu pierwszego zdarzenia. Dlatego wystąpienie 2 stało się wystąpieniem 1, a wystąpienie 3 stało się wystąpieniem 2. A ponieważ nie było więcej wystąpień, wynik wystąpienia 3 był NULL (tj. nie było wystąpienia 3).

Przykład 6 – 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_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive',
  REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Case-Insensitive';

Wynik:

+----------------+------------------+
| Case-Sensitive | Case-Insensitive |
+----------------+------------------+
| NULL           | Cat              |
+----------------+------------------+

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.

  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 włączyć automatyczne ponowne łączenie klienta MySQL z MySQLdb?

  2. MAX() – Znajdź maksymalną wartość w kolumnie w MySQL

  3. Uzyskaj dostęp do zdalnej bazy danych mysql z wiersza poleceń

  4. Konwertuj tekst na liczbę w zapytaniu MySQL

  5. MySQL:przyznaj **wszystkie** uprawnienia do bazy danych