Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2025 (17.x)
Azure SQL-Datenbank
Azure SQL Managed Instance
SQL-Datenbank in Microsoft Fabric
In diesem Artikel werden reguläre Ausdrücke für SQL Server vorgestellt.
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.
Note
Reguläre Ausdrücke sind in der Azure SQL Managed Instance mit der SQL Server 2025 oder Always-up-to-date-Aktualisierungsrichtlinie verfügbar.
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.
Unterstützte regex-Funktionen:
| Function | Description |
|---|---|
| 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 Metacharactern bestehen, die besondere Bedeutungen und Funktionen aufweisen.
Ein einfacher regulärer Ausdruck ist ein einzelnes Literalzeichen. Zeichen entsprechen sich selbst, mit Ausnahme der Metacharacter. Metacharacter umfassen *, , +, ?, (, , )oder |. Um einem Metacharacter zuzuordnen, escape es mit einem umgekehrten Schrägstrich. Beispielsweise entspricht \* dem Literal-Sternchen (*).
Zwei reguläre Ausdrücke können geändert oder verkettet werden, um einen neuen regulären Ausdruck zu bilden: Wenn e1 mit "s " und "e2 " übereinstimmt, dann " e1 | e2 " mit "s " oder "t" übereinstimmt, und e1e2 mit st.
Die Metacharacter *, +und ? sind Wiederholungsoperatoren: e1* entspricht einer Sequenz von Null oder mehr (möglicherweise unterschiedlichen) Zeichenfolgen, die jeweils mit e1 übereinstimmen; e1 + entspricht einer oder mehreren; e1? gleicht 0 oder 1 ab.
Rangfolge des Operators, von der schwächsten bis zur stärksten Bindung, lautet wie folgt: - Alternation - Verkettung - Wiederholungsoperatoren
Explizite Klammern können verwendet werden, um unterschiedliche Bedeutungen zu erzwingen, wie in arithmetischen Ausdrücken. Einige Beispiele: ab|cd entspricht (ab)|(cd) ; ab entspricht a(b).
Weitere Informationen zur von RE2 akzeptierten Syntax für reguläre Ausdrücke finden Sie unter
Re2 Reguläre Ausdruckssyntax. Auf dieser Seite werden auch einige Syntaxen aufgeführt, die von PCRE, Perl und Vim akzeptiert werden.
Akzeptierte Zeichen für reguläre Ausdrücke
Einzelne Zeichenausdrücke
| Varianten von Ausdrücken, die aus einem einzelnen Zeichen bestehen | Examples |
|---|---|
| Alle Zeichen, möglicherweise auch Zeilenvorschub (s=true) | . |
| character class | [xyz] |
| Negierte Zeichenklasse | [^xyz] |
| Perl-Zeichenklassen | \d |
| Negierte Perl-Zeichenklasse | \D |
| ASCII-Zeichenklassen | [[:alpha:]] |
| Negierte ASCII-Zeichenklasse | [[:^alpha:]] |
| Unicode-Zeichenklasse (Name aus nur einem Buchstaben) | \pN |
| Unicode-Zeichenklasse | \p{Greek} |
| Negierte Unicode-Zeichenklasse (Name aus nur einem Buchstaben) | \PN |
| Negierte Unicode-Zeichenklasse | \P{Greek} |
| Verbundwerkstoffe | Description |
|---|---|
xy |
x gefolgt von y |
x | y |
x oder y (x bevorzugen) |
| Wiederholungen | Description |
|---|---|
x* |
null oder mehr x, bevorzugen Sie mehr |
x+ |
ein oder mehrere x, bevorzugen Sie mehr |
x? |
0 oder ein x, lieber eins |
x{n,m} |
n oder n+1 oder ... oder m x, bevorzugen Sie mehr |
x{n,} |
n oder mehr x, bevorzugen Sie mehr |
x{n} |
genau n x |
x*? |
null oder mehr x, bevorzugen weniger |
x+? |
ein oder mehrere x, bevorzugen weniger |
x?? |
null oder ein x, bevorzugen Null |
x{n,m}? |
n oder n+1 oder ... oder m x, weniger bevorzugen |
x{n,}? |
n oder mehr x, bevorzugen weniger |
x{n}? |
genau n x |
Note
Die Zählformulare x{n,m}, x{n,}und x{n} ablehnen Formulare, die eine mindeste oder maximale Wiederholungsanzahl über 1.000 erzeugen. Unbegrenzte Wiederholungen unterliegen dieser Einschränkung nicht.
Perl-Zeichenklassen
In der folgenden Tabelle sind derzeit unterstützte Perl-Zeichenklassen aufgeführt.
| Perl-Zeichenklassen (alle nur in ASCII-Format) | Description |
|---|---|
\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 | Description |
|---|---|
[[:alnum:]] |
alphanumerisch ( [0-9A-Za-z]) |
[[:alpha:]] |
Alphabetisch ( [A-Za-z]) |
[[:ascii:]] |
ASCII ( [\x00-\x7F]) |
[[:blank:]] |
Blank ( [\t ]) |
[[:cntrl:]] |
Kontrolle ( [\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ßschreibung ( [A-Z]) |
[[:word:]] |
Wortzeichen ( [0-9A-Za-z_]) |
[[:xdigit:]] |
Hexziffer ( [0-9A-Fa-f]) |
Literalzeichen
- Letters
- Numbers
- Symbols
Leere Zeichenfolgen
| Leere Zeichenfolgen | Description |
|---|---|
^ |
Am Anfang von Text oder Zeile (m=true) |
$ |
Am Ende des Texts (wie \z, nicht \Z) oder Zeile (m=true) |
\A |
Am Anfang des Texts |
\b |
Bei ASCII-Wortgrenze (\w auf einer Seite und \W, \Aoder \z auf der anderen Seite) |
\B |
Nicht bei ASCII-Wortgrenze |
\z |
Am Ende des Texts |
Groupings
Die Aufnahmegruppe (Unterausdruck) des Musters mit:
| Grouping | Description |
|---|---|
(re) |
Nummerierte Erfassungsgruppe (Unterübereinstimmung) |
(?P<name>re) |
Benannte und nummerierte Erfassungsgruppe (Unterübereinstimmung) |
(?:re) |
Gruppe ohne Erfassung |
(?<flags>) |
Innerhalb der aktuellen Gruppe festlegen <flags> ; nicht erfassen |
(?<flags>:re) |
Festlegen <flags> während re; nicht erfassende Gruppierung |
Flags
Verwenden Sie Flags, um das Ausdrucksverhalten zu ändern. Beispiel:
| Flag | Description |
|---|---|
i |
Groß-/Kleinschreibung wird nicht beachtet (Standard false) |
m |
Mehrzeiligen Modus: ^ und $ Zuordnen der Anfangs-/Endzeile zusätzlich zum Anfangs-/Endtext (Standard false) |
s |
Übereinstimmung . zulassen \n (Standardfalse) |
c |
Groß-/Kleinschreibung beachten (Standard true) |
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. Weitere Informationen zu unterstützten Konstrukten und Verhalten des zugrunde liegenden Regex-Moduls finden Sie unter RE2, einer Bibliothek für reguläre Ausdrücke.
Note
Die Übereinstimmung von regulären Ausdrücken in SQL Server berücksichtigt nicht SQL-Kollationen für linguistischen Vergleichen. Dieses Verhalten ist so vorgesehen und konsistent mit den meisten regulären Ausdrucksmotoren, da die Übereinstimmung auf dem Muster und den Unicode-Zeicheneigenschaften basiert und nicht auf Sortierungsregeln. Daher kann dies zu Verhaltensunterschieden im Vergleich zu anderen Zeichenfolgenvergleichsfunktionen wie LIKE führen, insbesondere bei indizierten Spalten mit sprachspezifischen Sortierungen.
Requirements
- 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.
FAQ
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.
Einschränkungen
Die folgenden Elemente werden derzeit nicht unterstützt:
- Lob-Datentypen (varchar(max) oder nvarchar(max))
string_expressionswerden in den folgenden systeminternen Funktionen unterstützt:REGEXP_LIKEREGEXP_COUNTREGEXP_INSTR
Diese Unterstützung ist jedoch auf Eingabegrößen von bis zu 2 MB beschränkt.
LOB-Datentypen werden in den folgenden Regex-Funktionen nicht unterstützt:
REGEXP_REPLACEREGEXP_SUBSTRREGEXP_MATCHESREGEXP_SPLIT_TO_TABLE
Reguläre Ausdrucksfunktionen werden in nativ kompilierten gespeicherten Prozeduren nicht unterstützt.