Freigeben über


Vorschau von regulären Ausdrücken

Gilt für: SQL Server 2025 (17.x) Vorschau der Azure SQL-Datenbank azureSQL Managed InstanceSQL SQL-Datenbank in Microsoft Fabric

In diesem Artikel werden reguläre Ausdrücke für SQL Server vorgestellt.

Hinweis

Als Previewfunktion unterliegt die in diesem Artikel vorgestellte Technologie den zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen.

Ein regulärer Ausdruck oder regex ist eine Abfolge von Zeichen, die ein Suchmuster für Text definieren. Regex wird häufig für eine Vielzahl von Aufgaben verwendet, einschließlich Musterabgleich, Datenüberprüfung, Datentransformation und Abfragen. Es bietet eine flexible und effiziente Möglichkeit zum Suchen, Bearbeiten und Verarbeiten komplexer Datenvorgänge.

Diese Implementierung des regulären Ausdrucks basiert auf der RE2-Bibliothek für reguläre Ausdrücke. Weitere Informationen finden Sie unter RE2 Regular Expression Syntax.

Beispiel:

Funktion BESCHREIBUNG
REGEXP_LIKE Gibt einen booleschen Wert zurück, der angibt, ob die Texteingabe mit dem regex-Muster übereinstimmt.
REGEXP_REPLACE Gibt eine geänderte Quellzeichenfolge, die durch eine Ersetzungszeichenfolge ersetzt wird, wobei das Vorkommen des regex-Musters gefunden wurde.
REGEXP_SUBSTR Extrahiert Teile einer Zeichenfolge basierend auf einem Muster für reguläre Ausdrücke.

Gibt das Nth-Vorkommen einer Teilzeichenfolge zurück, die dem regex-Muster entspricht.
REGEXP_INSTR Gibt die Anfangs- oder Endposition der übereinstimmenden Teilzeichenfolge abhängig von der angegebenen Option zurück.
REGEXP_COUNT Gibt die Anzahl der Male zurück, mit denen regex-Muster in einer Zeichenfolge auftritt.
REGEXP_MATCHES Gibt eine Tabelle mit erfassten Teilzeichenfolgen zurück, die einem Muster für reguläre Ausdrücke mit einer Zeichenfolge entsprechen. Wenn keine Übereinstimmung gefunden wird, gibt die Funktion keine Zeile zurück.
REGEXP_SPLIT_TO_TABLE Gibt eine Tabelle mit geteilten Zeichenfolgen zurück, die durch das Regex-Muster getrennt ist. Wenn keine Übereinstimmung mit dem Muster vorhanden ist, gibt die Funktion die Zeichenfolge zurück.

Reguläre Ausdrücke können aus Literalzeichen und Metazeichen bestehen, die besondere Bedeutungen und Funktionen aufweisen.

Ein einfacher regulärer Ausdruck ist ein einzelnes Literalzeichen. Zeichen entsprechen sich selbst, mit Ausnahme der Metazeichen. Metazeichen umfassen *, , +, ?, (, , )oder |. Um einem Metazeichen zu entsprechen, escape es mit einem umgekehrten Schrägstrich. Beispielsweise entspricht \* dem Literal-Sternchen (*).

Akzeptierte Zeichen für reguläre Ausdrücke

Einzelzeichenausdrücke

Arten von Ausdrücken, die aus einem einzelnen Zeichen bestehen Beispiele
ein beliebiges Zeichen, das möglicherweise ein Zeilenumbruch einschließt (s = wahr) .
Zeichenklasse [xyz]
negierte Zeichenklasse [^xyz]
Perl-Zeichenklassen \d
negierte Perl-Zeichenklasse \D
ASCII-Zeichenklassen [[:alpha:]]
negierte ASCII-Zeichenklasse [[:^alpha:]]
Unicode-Zeichenklasse (einbuchstabiger Name) \pN
Unicode-Zeichenklasse \p{Greek}
negierte Unicode-Zeichenklasse (einbuchstabiger Name) \PN
negierte Unicode-Zeichenklasse \P{Greek}

Perl-Zeichenklassen

In der folgenden Tabelle sind derzeit unterstützte Perl-Zeichenklassen aufgeführt.

Perl-Zeichenklassen (alle nur in ASCII-Format) BESCHREIBUNG
\d Ziffern ( [0-9])
\D keine Ziffern ( [^0-9])
\s Leerzeichen ( [\t\n\f\r ])
\S keine Leerzeichen ( [^\t\n\f\r ])
\w Wortzeichen ( [0-9A-Za-z_])
\W keine Wortzeichen ( [^0-9A-Za-z_])

ASCII-Zeichenklassen

In der folgenden Tabelle sind derzeit unterstützte ASCII-Zeichenklassen aufgeführt.

ASCII-Zeichenklassen BESCHREIBUNG
[[:alnum:]] alphanumerisch ( [0-9A-Za-z])
[[:alpha:]] alphabetisch ( [A-Za-z])
[[:ascii:]] ASCII ( [\x00-\x7F])
[[:blank:]] leer ( [\t ])
[[:cntrl:]] Steuerung ( [\x00-\x1F\x7F])
[[:digit:]] Ziffern ( [0-9])
[[:graph:]] grafische ( [!-~] oder [A-Za-z0-9!“#$%&’()*+,\-./:;<=>?@[\\\]^_`{|}~])
[[:lower:]] Kleinbuchstabe ( [a-z])
[[:print:]] druckbar ( [ -~] oder [ [:graph:]])
[[:punct:]] Interpunktion ( [!-/:-@[-\``{-~])
[[:space:]] Leerzeichen ( [\t\n\v\f\r ])
[[:upper:]] Großbuchstabe ( [A-Z])
[[:word:]] Wortzeichen ( [0-9A-Za-z_])
[[:xdigit:]] Hexziffer ( [0-9A-Fa-f])

Literalzeichen

  • Buchstaben
  • Zahlen
  • Symbole

Metazeichen

  • * entspricht null oder mehr Vorkommen des vorhergehenden Zeichens.
  • ^ entspricht dem Anfang einer Zeile.

Gruppierungen

Gruppieren und Erfassen von Teilen des Musters mit:

  • Klammern ( )
  • Eckige Klammern [ ]
  • Geschweifte Klammern { }

Flaggen

Verwenden Sie Flags, um das Ausdrucksverhalten zu ändern. Beispiel:

  • i
  • m
  • s
  • c

Diese Implementierung unterstützt den POSIX-Standard regulärer Ausdrücke basierend auf RE2 und bietet Unterstützung für die PCRE/PCRE2-Variante der regulären Ausdrückesyntax, die mit den meisten modernen Engines und Tools für reguläre Ausdrücke kompatibel ist. Es gibt verschiedene Varianten regulärer Ausdrücke, z. B. POSIX, ANSI, Perl und PCRE, die unterschiedliche Syntax und Features aufweisen.

Anforderungen

  • Ein SQL-Clienttool, z. B. Azure Data Studio, SQL Server Management Studio oder Visual Studio Code.
  • Grundlegende Kenntnisse der SQL-Syntax und -Abfragen.
  • Grundlegendes Verständnis der Syntax und Konzepte regulärer Ausdrücke.

Häufig gestellte Fragen

Welchen Einfluss hat die Verwendung von Regex auf die Performance?

Regex-Abfragen können sich je nach Komplexität des Regex-Musters, der Größe der Textdaten und der Anzahl der beteiligten Zeilen auf die Leistung auswirken. Sie können den Ausführungsplan und die Statistik verwenden, um die Leistung Ihrer regex-Abfragen zu überwachen und zu optimieren.

Bekannte Probleme, Verhaltensweisen und Einschränkungen

Dies sind die Elemente, die derzeit in dieser Vorschau nicht unterstützt werden:

  • LOB-Datentypen (varchar(max) oder nvarchar(max)) für string_expressions
  • Reguläre Ausdrucksfunktionen werden für speicheroptimierte OLTP-Tabellen nicht unterstützt.