Mysql
 sql >> база данни >  >> RDS >> Mysql

Как работи функцията REGEXP_SUBSTR() в MySQL

В MySQL, REGEXP_SUBSTR() функцията връща подниз, който съответства на дадения модел на регулярен израз.

Ако няма съвпадение (т.е. входният низ не съдържа подниза), резултатът е NULL .

Синтаксис

Синтаксисът е така:

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

Където expr е входният низ и pat е шаблонът на регулярния израз за подниза.

Незадължителният pos аргумент ви позволява да посочите позиция в низа, за да започнете търсенето. Ако се пропусне, започва от позиция 1.

Незадължителното occurrence аргумент ви позволява да посочите кое възникване на съвпадението да търсите. Ако се пропусне, се използва първото появяване (възникване 1).

Незадължителният match_type аргумент ви позволява да прецизирате регулярния израз. Например, можете да използвате този аргумент, за да посочите съвпадение, което е чувствително към главни букви или не.

Пример 1 – Основна употреба

Ето един основен пример:

SELECT REGEXP_SUBSTR('Тайланд или Камбоджа', 'l.nd') Резултат;

Резултат:

+--------+| Резултат |+--------+| земя |+--------+

В този случай има съвпадение и поднизът се връща.

Пример 2 – Множество съвпадения

По подразбиране, ако има няколко съвпадения в низа, първото се връща (въпреки че можете да посочите друго събитие, ако е необходимо. Ще стигнем до това скоро):

SELECT REGEXP_SUBSTR('Заем за земя', 'l.nd') Резултат;

Резултат:

+--------+| Резултат |+--------+| Заем |+--------+

Пример 3 – Няма съвпадение

Ето пример, където няма съвпадение:

SELECT REGEXP_SUBSTR('Заем за земя', '^C') Резултат;

Резултат:

+--------+| Резултат |+--------+| NULL |+--------+

Няма съвпадение, така че резултатът е NULL .

Пример 4 – pos Аргумент

Ето пример за определяне на начална позиция:

SELECT REGEXP_SUBSTR('Cat Cut Cat', 'C.t', 2) Резултат;

Резултат:

+--------+| Резултат |+--------+| Изрязване |+--------+

Започнахме от позиция 2, която идва след началото на първото срещане, така че вместо това се връща следващото събитие.

Ето още един пример:

SELECT REGEXP_SUBSTR('Cat Cut Cat', 'C.t', 1) 'Pos 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) 'Pos 2', REGEXP_SUBSTR('Cat Cut Cot“, „C.t“, 6) „Поз 6“;

Резултат:

+-------+-------+-------+| Поз 1 | Поз 2 | Поз 6 |+-------+-------+-------+| Котка | Изрежете | Кошарка |+-------+-------+-------+

Пример 5 – occurrence Аргумент

Ето пример за използване на occurrence аргумент. Във всички случаи започваме от позиция 1:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Eccurrence 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Eccurrence 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Среща 3';

Резултат:

<пред>+--------------+--------------+--------------+| Възникване 1 | Възникване 2 | Възникване 3 |+--------------+--------------+--------------+| Котка | Изрежете | Кошарка |+--------------+--------------+--------------+

Ако обаче започнем от друга позиция, резултатът е различен:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Eccurrence 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Eccurrence 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Среща 3';

Резултат:

<пред>+--------------+--------------+--------------+| Възникване 1 | Възникване 2 | Възникване 3 |+--------------+--------------+--------------+| Изрежете | Кошарка | NULL |+--------------+--------------+--------------+

Това се случи, защото нашата начална позиция дойде след началото на първото събитие. Следователно събитие 2 стана събитие 1, а събитие 3 стана събитие 2. И тъй като нямаше повече събития, резултатът от събитие 3 беше NULL (т.е. нямаше събитие 3).

Пример 6 – match_type Аргумент

Можете да предоставите допълнителен аргумент, за да определите типа на съвпадението. Това ви позволява да укажете неща като това дали съвпадението е чувствително или не, дали да включвате или не терминатори на ред и т.н.

Ето пример за посочване на съвпадение, чувствително към главни и малки букви:

SELECT REGEXP_SUBSTR('Котешко креватче', 'c.t', 1, 1, 'c') 'Чувствителен регистър', REGEXP_SUBSTR('Cat Cut Cut', 'c.t', 1, 1, „i“) „Регистърът не е чувствителен“;

Резултат:

+----------------+-----------------+| Регистрът на буквите е чувствителен | Без значение на регистрите |+----------------+----------------+| NULL | Котка |+----------------+----------------+

match_type аргументът може да съдържа следните знаци:

c
Отчитане на главни и малки букви.
i
Съответствие без разлика в главни и малки букви.
m
Режим на няколко реда. Разпознаване на завършващите линии в низа. Поведението по подразбиране е да съвпадат терминатори на ред само в началото и в края на низовия израз.
n
. символът съвпада с терминатори на ред. По подразбиране е за . съвпадение за спиране в края на ред.
u
Окончания на редове само за Unix. Само символът за нов ред се разпознава като ред, завършващ с . , ^ и $ оператори за съвпадение.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Топ 5 инструмента за наблюдение на MySQL

  2. Използвайте mysqldump за архивиране на MySQL или MariaDB

  3. Производителност на MySQL:Въведение в JOIN в SQL

  4. Естествено сортиране в MySQL

  5. Хибридна облачна репликация за MySQL за висока наличност