Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2025 (17.x) — предварительная версия
базы данных
SQLAzure Для Управляемого экземпляра
SQL Azureв Microsoft Fabric
В этой статье представлены регулярные выражения для SQL Server.
Замечание
В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.
Регулярное выражение, или сокращённо regex, — это последовательность символов, определяющая шаблон поиска текста. Regex часто используется для различных задач, включая сопоставление шаблонов, проверку данных, преобразование данных и запросы. Он предлагает гибкий и эффективный способ поиска, управления и обработки сложных операций с данными.
Замечание
Регулярные выражения доступны в Управляемом экземпляре SQL Azure, настроенном с помощью политики обновления Always-up-to-date .
Эта реализация регулярного выражения основана на библиотеке регулярных выражений RE2. Дополнительные сведения см. в синтаксисе регулярных выражений RE2.
Рассмотрим пример.
Функция | Описание |
---|---|
REGEXP_LIKE | Возвращает логическое значение, указывающее, соответствует ли ввод текста шаблону regex. |
REGEXP_REPLACE | Возвращает измененную исходную строку, замененную строкой замены, в которой обнаружен шаблон regex. |
REGEXP_SUBSTR | Извлекает части строки на основе шаблона регулярного выражения. Возвращает N-е вхождение подстроки, которая соответствует шаблону regex. |
REGEXP_INSTR | Возвращает начальную или конечную позицию соответствующей подстроки в зависимости от указанного параметра. |
REGEXP_COUNT | Возвращает количество раз, когда шаблон регулярных выражений возникает в строке. |
REGEXP_MATCHES | Возвращает таблицу захваченных подстрок, которые соответствуют шаблону регулярного выражения строке. Если совпадение не найдено, функция не возвращает строку. |
REGEXP_SPLIT_TO_TABLE | Возвращает таблицу строк, разделенную шаблоном регулярных выражений. Если шаблон не соответствует, функция возвращает строку. |
Регулярные выражения могут состоять из литеральных символов и мета-символов, которые имеют особые значения и функции.
Простое регулярное выражение — это один литеральный символ. Символы соответствуют своим значениям, за исключением мета-символов. Мета-символы включают *
, +
, ?
, (
, )
или |
. Чтобы сопоставить мета-символ, экранируйте его с помощью обратной косой черты. Например, \*
соответствует литеральному символу звёздочка (*
).
Принятые символы регулярных выражений
Односимвольные выражения
Типы односимвольных выражений | Примеры |
---|---|
любой символ, возможно, включающий новую строку (s=true) | . |
класс символов | [xyz] |
класс отрицательных символов | [^xyz] |
Классы символов Perl | \d |
класс отрицательных символов Perl | \D |
Классы символов ASCII | [[:alpha:]] |
класс отрицательных символов ASCII | [[:^alpha:]] |
класс символов Юникода (однобуквенное имя) | \pN |
класс символов Юникода | \p{Greek} |
класс отрицательных символов Юникода (однобуквенное имя) | \PN |
класс отрицательных символов Юникода | \P{Greek} |
Классы символов Perl
В следующей таблице перечислены поддерживаемые в настоящее время классы символов Perl.
классы символов Perl (только ASCII) | Описание |
---|---|
\d |
цифры ( [0-9] ) |
\D |
не цифры ( [^0-9] ) |
\s |
пробелы ( [\t\n\f\r ] ) |
\S |
не пробелы ( [^\t\n\f\r ] ) |
\w |
символы слова ( [0-9A-Za-z_] ) |
\W |
не символы слов ( [^0-9A-Za-z_] ) |
Классы символов ASCII
В следующей таблице перечислены поддерживаемые в настоящее время классы символов ASCII.
Классы символов ASCII | Описание |
---|---|
[[:alnum:]] |
буквенно-цифровой ( [0-9A-Za-z] ) |
[[:alpha:]] |
алфавитный ( [A-Za-z] ) |
[[:ascii:]] |
ASCII ( [\x00-\x7F] ) |
[[:blank:]] |
пусто ( [\t ] ) |
[[:cntrl:]] |
контроль ( [\x00-\x1F\x7F] ) |
[[:digit:]] |
цифры ( [0-9] ) |
[[:graph:]] |
графический ( [!-~] или [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~] ) |
[[:lower:]] |
нижний регистр ( [a-z] ) |
[[:print:]] |
подходящий для печати ( [ -~] или [ [:graph:]] ) |
[[:punct:]] |
знак препинания ( [!-/:-@[-\``{-~] ) |
[[:space:]] |
пробелы ( [\t\n\v\f\r ] ) |
[[:upper:]] |
верхний регистр ( [A-Z] ) |
[[:word:]] |
символы слова ( [0-9A-Za-z_] ) |
[[:xdigit:]] |
шестнадцатеричная цифра ( [0-9A-Fa-f] ) |
Литеральные символы
- Письма
- Числа
- Символы
Мета-символы
-
*
соответствует нулю или нескольким вхождениям предыдущего символа -
^
соответствует началу строки
Группировки
Группировать и записывать части шаблона с помощью следующих элементов:
- Круглые скобки
( )
- Скобки
[ ]
- Фигурные скобки
{ }
Флаги
Используйте флаги для изменения работы выражения. Рассмотрим пример.
i
m
s
c
Эта реализация поддерживает стандарт POSIX регулярных выражений, следуя RE2, и поддерживает вариант синтаксиса регулярных выражений PCRE/PCRE2, который совместим с большинством современных инструментов и средств обработки регулярных выражений. Существуют различные варианты регулярных выражений, такие как POSIX, ANSI, Perl и PCRE, которые имеют разные синтаксис и функции.
Требования
- Клиентское средство SQL, например Azure Data Studio, SQL Server Management Studio или Visual Studio Code.
- Базовые знания о синтаксисе и запросах SQL.
- Базовое понимание синтаксиса регулярных выражений и концепций.
Вопросы и ответы
Что влияет на производительность использования регулярных выражений?
Запросы regex могут повлиять на производительность в зависимости от сложности шаблона regex, размера текстовых данных и количества связанных строк. Вы можете использовать план выполнения и статистику для мониторинга и оптимизации производительности запросов регулярных выражений.
Известные проблемы, поведение и ограничения
Это элементы, которые в настоящее время не поддерживаются в этой предварительной версии:
- Типы данных LOB (varchar(max) или nvarchar(max)) для
string_expressions
- Функции регулярного выражения не поддерживаются в таблицах OLTP, оптимизированных для памяти