Freigeben über


REGEXP_SUBSTR (Transact-SQL)

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

Gibt ein Vorkommen einer Teilzeichenfolge einer Zeichenfolge zurück, die dem Muster für reguläre Ausdrücke entspricht. Wenn keine Übereinstimmung gefunden wird, wird sie zurückgegeben NULL.

REGEXP_SUBSTR
(
    string_expression,
    pattern_expression [ , start [ , occurrence [ , flags [ , group ] ] ] ]
)

Note

Reguläre Ausdrücke sind in azure SQL Managed Instance mit der SQL Server 2025- oder Always-up-to-Datumsaktualisierungsrichtlinie verfügbar.

Arguments

string_expression

Ein Ausdruck einer Zeichenfolge.

Dabei kann es sich um eine Konstante, Variable oder Spalte von Zeichenfolgen handeln.

Datentypen: Char, nchar, varcharoder nvarchar.

Note

Die REGEXP_LIKE, REGEXP_COUNTund REGEXP_INSTR Funktionen unterstützen LOB-Typen (varchar(max) und nvarchar(max)) bis zu 2 MB für den string_expression-Parameter .

pattern_expression

Muster für reguläre Ausdrücke, das übereinstimmen soll. In der Regel ein Textliteral.

Datentypen: Char, nchar, varcharoder nvarchar. pattern_expression unterstützt eine maximale Zeichenlänge von 8.000 Byte.

start

Geben Sie die Startposition für die Suche innerhalb der Suchzeichenfolge an. Optional. Typ ist int oder bigint.

Die Nummerierung ist 1-basiert, d. h. das erste Zeichen im Ausdruck ist 1 und der Wert muss >= 1werden. Wenn der Startausdruck kleiner als 1ist, wird ein Fehler zurückgegeben. Wenn der Startausdruck größer als die Länge string_expression ist, gibt die Funktion zurück NULL. Der Standardwert ist 1.

occurrence

Ein Ausdruck (positive ganze Zahl), der angibt, welches Vorkommen des Musterausdrucks innerhalb der Quellzeichenfolge durchsucht oder ersetzt werden soll. Der Standardwert ist 1. Sucht nach dem ersten Zeichen des string_expression. Bei einer positiven ganzzahligen Zahl n wird nach dem ersten Zeichen nach dem ersten Vorkommen des pattern_expression gesucht, usw.

flags

Mindestens ein Zeichen, das die Modifizierer für die Suche nach Übereinstimmungen angibt. Der Typ ist varchar oder Zeichenmit maximal 30 Zeichen.

Beispiel: ims. Der Standardwert ist c. Wenn eine leere Zeichenfolge (' ') angegeben wird, wird sie als Standardwert ('c')behandelt. Geben Sie c oder andere Zeichenausdrücke an. Wenn das Kennzeichen mehrere widersprüchliche Zeichen enthält, verwendet SQL Server das letzte Zeichen.

Wenn Sie z. B. angeben, ic der regex-Wert den Abgleich zwischen Groß- und Kleinschreibung zurückgibt.

Wenn der Wert ein anderes Zeichen als die unter unterstützten Flagwerteenthält, gibt die Abfrage einen Fehler wie im folgenden Beispiel zurück:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Unterstützte Flagwerte
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)

group

Gibt an, welche Aufnahmegruppe (Subexpression) eines pattern_expression die Position innerhalb string_expression zurückzugeben. Die Aufnahmegruppe (Unterausdruck) ist ein Musterfragment, das in Klammern eingeschlossen ist und geschachtelt werden kann.

Die Aufnahmegruppen werden in der Reihenfolge nummeriert, in der ihre linken Klammern angezeigt werden. Der Datentyp der Gruppe ist int und der Wert muss größer als oder gleich sein , 0und darf nicht größer sein als die Anzahl der Eroberungsgruppen (Unterausdrücke) in pattern_expression. Der Standardgruppenwert ist 0, was anzeigt, dass die Position auf der Zeichenkette basiert, die dem gesamten Muster entspricht.

Rückgabewert

String.

Examples

Extrahieren Sie den Domänennamen aus einer E-Mail-Adresse.

SELECT REGEXP_SUBSTR(EMAIL, '@(.+)$', 1, 1, 'i', 1) AS DOMAIN
FROM CUSTOMERS;

Suchen Sie das erste Wort in einem Satz, der mit einem Vokal beginnt.

SELECT REGEXP_SUBSTR(COMMENT, '\b[aeiou]\w*', 1, 1, 'i') AS WORD
FROM FEEDBACK;

Rufen Sie die letzten vier Ziffern einer Kreditkartennummer ab.

SELECT REGEXP_SUBSTR(CARD_NUMBER, '\d{4}$') AS LAST_FOUR
FROM PAYMENTS;