Прочитать на английском

Поделиться через


Предварительный просмотр регулярных выражений

Применимо к: 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, оптимизированных для памяти

Дополнительные ресурсы

Обучение

Модуль

Общие сведения о улучшениях SQL Server 2022 T-SQL - Training

В SQL Server 2022 представлен ряд новых функций и улучшений, предоставляя мощные средства и возможности, которые оптимизируют производительность и обеспечивают более эффективный контроль над манипуляциями и созданием объектов SQL.

События

FabCon Вена

15 сент., 06 - 17 сент., 15

Лучшее событие обучения под руководством сообщества SQL. Sept 2025. Сохраните 200 евро с кодом FABLEARN.

Get registered