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) Vorschau der
Azure SQL-Datenbank
azureSQL Managed Instance
SQL SQL-Datenbank in Microsoft Fabric
Anmerkung
Als Vorschaufeature unterliegt die in diesem Artikel vorgestellte Technologie ergänzenden Nutzungsbedingungen für Microsoft Azure Previews.
Gibt an, ob das Muster für reguläre Ausdrücke in einer Zeichenfolge übereinstimmt.
REGEXP_LIKE
(
string_expression,
pattern_expression [, flags ]
)
REGEXP_LIKE
erfordert Datenbankkompatibilitätsebene 170 und höher. Wenn die Kompatibilitätsebene der Datenbank niedriger als 170 ist, REGEXP_LIKE
ist sie nicht verfügbar. Andere skalare Funktionen für reguläre Ausdrücke sind auf allen Kompatibilitätsebenen verfügbar.
Sie können die Kompatibilitätsebene in der ansicht sys.databases
oder in Datenbankeigenschaften überprüfen. Sie können die Kompatibilitätsebene einer Datenbank mit dem folgenden Befehl ändern:
ALTER DATABASE [DatabaseName] SET COMPATIBILITY_LEVEL = 170;
Argumente
string_expression
Ein Ausdruck einer Zeichenfolge.
Dabei kann es sich um eine Konstante, Variable oder Spalte von Zeichenfolgen handeln.
Datentypen: Char, nchar, varcharoder nvarchar.
Anmerkung
Die REGEXP_LIKE
, REGEXP_COUNT
und 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.
Kennzeichnungen
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
Flagge | Beschreibung |
---|---|
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 ) |
Rückgabewert
Boolescher Wert.
true
oder false
.
Bemerkungen
Um die Genauigkeit der Kardinalitätsschätzung für die REGEXP_LIKE
Funktion zu verbessern, können Sie die ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP
Hinweise und ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP
Abfragehinweise verwenden, um die Standardauswahlwerte anzupassen. Weitere Informationen finden Sie unter Abfragehinweise.
Diese Abfragehinweise sind auch in das Feedback der Kardinalitätsschätzung (Cardinality Estimation, CE) integriert. Das CE-Feedbackmodell identifiziert Automatisch Abfragen mithilfe der REGEXP_LIKE
Funktion, bei denen es einen signifikanten Unterschied zwischen geschätzter und tatsächlicher Zeilenanzahl gibt. Anschließend wird der entsprechende Auswahlhinweis auf Abfrageebene angewendet, um die Planqualität zu verbessern, ohne dass manuelle Eingaben erforderlich sind.
Um dieses automatische feedbackbasierte Verhalten zu deaktivieren, aktivieren Sie die Ablaufverfolgungskennzeichnung 16268.
Beispiele
Wählen Sie alle Datensätze aus der EMPLOYEES
Tabelle aus, in der der Vorname mit A
beginnt und mit Y
endet.
SELECT * FROM EMPLOYEES WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
Wählen Sie alle Datensätze aus der tabelle ORDERS
aus, in der sich das Bestelldatum im Februar 2020 befindet.
SELECT * FROM ORDERS WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
Wählen Sie alle Datensätze aus der tabelle PRODUCTS
aus, in der der Produktname mindestens drei aufeinander folgende Vokale enthält.
SELECT * FROM PRODUCTS WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
Erstellen Sie die Tabelle "Mitarbeiter" mit CHECK
Einschränkungen für Email
und Phone_Number
Spalten.
DROP TABLE IF EXISTS EMPLOYEES;
CREATE TABLE EMPLOYEES (
ID INT IDENTITY(101,1),
[Name] VARCHAR(150),
Email VARCHAR(320)
CHECK (REGEXP_LIKE(Email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')),
Phone_Number NVARCHAR(20)
CHECK (REGEXP_LIKE (Phone_Number, '^(\d{3})-(\d{3})-(\d{4})$'))
);