В этом учебном пособии вы узнаете, как использовать Oracle условие REGEXP_LIKE (регулярные выражения) с синтаксисом и примерами.
Не следует путать с условием LIKE, который выполняет простое сопоставление с шаблоном.
Описание
Oracle условие REGEXP_LIKE позволяет выполнять регулярные выражения в предложении WHERE в запросах SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис для REGEXP_LIKE в Oracle/PLSQL:
Параметры или аргументы
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. Например:
1 2 3 |
SELECT last_name FROM contacts WHERE REGEXP_LIKE (last_name, 'Anders(o|e|a)n'); |
Этот пример REGEXP_LIKE возвращает все contacts, чьи last_name либо ‘Anderson’, ‘Andersen’, или ‘Andersan’. Шаблон | указывает, чтобы поиск шел по буквам "o", "e", или "a".
Пример соответствия началу
Далее, используем условие REGEXP_LIKE для соответствия началу строки. Например:
1 2 3 |
SELECT last_name FROM contacts WHERE REGEXP_LIKE (last_name, '^A(*)'); |
Этот пример REGEXP_LIKE возвращает все contacts, чьи last_name начинается на 'A'.
Пример соответствия концу
Далее, используем условие REGEXP_ LIKE для соответствия концу строки. Например:
1 2 3 |
SELECT last_name FROM contacts WHERE REGEXP_LIKE (last_name, '(*)n$'); |
Этот пример REGEXP_LIKE возвратит все contacts, чьи last_name заканчиваются на 'n'.