REGEXP_LIKE ФУНКЦИЯ

В этом учебном пособии вы узнаете, как использовать Oracle условие REGEXP_LIKE (регулярные выражения) с синтаксисом и примерами.

Не следует путать с условием LIKE, который выполняет простое сопоставление с шаблоном.

Описание

Oracle условие REGEXP_LIKE позволяет выполнять регулярные выражения в предложении WHERE в запросах SELECT, INSERT, UPDATE или DELETE.

Синтаксис

Синтаксис для REGEXP_LIKE в Oracle/PLSQL:

REGEXP_LIKE ( expression, pattern [, match_parameter ] )

Параметры или аргументы

expression
Символьное выражение такие как столбец или поле. Это могут быть следующие типы данных: VARCHAR2, CHAR, NVARCHAR2, NCHAR, CLOB или NCLOB.

pattern
Шаблон. Регулярное выражение для сопоставления. Это может быть комбинацией следующих значений:

Значение Описание
^ Соответствует началу строки. При использовании match_parameter с 'm', соответствует началу строки в любом месте в пределах выражения.
$ Соответствует концу строки. При использовании match_parameter с 'm', соответствует концу строки в любом месте в пределах выражения.
* Соответствует нолю или более вхождений.
+ Соответствует одному или более вхождений.
? Соответствует нолю или одному вхождению.
. Соответствует любому символу, кроме NULL.
| Используется как "OR", чтобы указать более одной альтернативы.
[ ] Используется для указания списка совпадений, где вы пытаетесь соответствовать любому из символов в списке.
[^ ] Используется для указания списока nonmatching, где вы пытаетесь соответствовать любому символу, за исключением тех кто в списке.
( ) Используется для групповых выражений в качестве подвыражений.
{m} Соответствует m раз.
{m,} Соответствие как минимум m раз.
{m,n} Соответствие как минимум m раз, но не более n раз.
\n n представляет собой число от 1 до 9. Соответствует n-му подвыражению находящемуся в ( ) перед \n.
[..] Соответствует одному сопоставлению элемента, который может быть более одного символа.
[::] Соответствует классу символов.
[==] Соответствует классу эквивалентности
\d Соответствует цифровому символу.
\D Соответствует не цифровому символу.
\w Соответствует текстовому символу.
\W Соответствует не текстовому символу.
\s Соответствует символу пробел.
\S Соответствует не символу пробел.
\A Соответствует началу строки или соответствует концу строки перед символом новой строки.
\Z Соответствует концу строки.
*? Соответствует предыдущему шаблону ноль или более вхождений.
+? Соответствует предыдущему шаблону один или более вхождений.
?? Соответствует предыдущему шаблону ноль или одному вхождению.
{n}? Соответствует предыдущему шаблону n раз.
{n,}? Соответствует предыдущему шаблону, по меньшей мере n раз.
{n,m}? Соответствует предыдущему шаблону, по меньшей мере n раз, но не более m раз.

match_parameter
Необязательный. Это позволяет изменять поведение соответствия для условия REGEXP_LIKE. Это может быть комбинацией следующих значений:

Значение Описание
'c' Выполняет чувствительное к регистру согласование.
'i' Выполняет не чувствительное к регистру согласование.
'n' Позволяет период символа (.) для соответствия символа новой строки. По умолчанию, период метасимволы.
'm' Выражение допускает, что есть несколько строк, где ^ это начало строки, а $ это конец строки, независимо от позиции этих символов в выражении. По умолчанию предполагается, что выражение в одной строке.
'x' Игнорируются символы пробелов. По умолчанию, символы пробелов совпадают, как и любой другой символ.

Примечание

  • Условие REGEXP_LIKE использует входной набор символов для оценки строк.
  • Если вы укажите значение match_parameter как конфликт, то условие REGEXP_LIKE будет использовать последнее значение, чтобы разорвать конфликт.
  • Если match_parameter опущен, условие REGEXP_LIKE будет использовать чувствительность к регистру, как определено параметром NLS_SORT.

Смотрите также Oracle оператор LIKE.

Пример сопоставления с более чем одной альтернативой

Первый пример Oracle условия REGEXP_LIKE, который мы рассмотрим, предполагает использование | шаблона.

Объясним, как | шаблон работает в Oracle условии REGEXP_LIKE. Например:

Этот пример REGEXP_LIKE возвращает все contacts, чьи last_name либо ‘Anderson’, ‘Andersen’, или ‘Andersan’. Шаблон | указывает, чтобы поиск шел по буквам "o", "e", или "a".

Пример соответствия началу

Далее, используем условие REGEXP_LIKE для соответствия началу строки. Например:

Этот пример REGEXP_LIKE возвращает все contacts, чьи last_name начинается на 'A'.

Пример соответствия концу

Далее, используем условие REGEXP_ LIKE для соответствия концу строки. Например:

Этот пример REGEXP_LIKE возвратит все contacts, чьи last_name заканчиваются на 'n'.