Delen via


preview van REGEXP_SUBSTR (Transact-SQL)

Van toepassing op: SQL Server 2025 (17.x) Preview AzureSQL Database Azure SQL Managed InstanceSQL-databasein Microsoft Fabric Preview

Note

Als preview-functie is de technologie die in dit artikel wordt gepresenteerd, onderworpen aan aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.

Retourneert één exemplaar van een subtekenreeks van een tekenreeks die overeenkomt met het reguliere expressiepatroon. Als er geen overeenkomst wordt gevonden, wordt deze geretourneerd NULL.

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

Note

Reguliere expressies zijn beschikbaar in Azure SQL Managed Instance met het sql Server 2025- of Always-up-to-datumupdatebeleid.

Arguments

string_expression

Een expressie van een tekenreeks.

Dit kan een constante, variabele of kolom van tekenreeks zijn.

Gegevenstypen: teken, nchar, varcharof nvarchar.

Note

De REGEXP_LIKEfuncties , REGEXP_COUNTen REGEXP_INSTR functies ondersteunen LOB-typen (varchar(max) en nvarchar(max)) tot 2 MB voor de parameter string_expression .

pattern_expression

Patroon voor reguliere expressies dat overeenkomt. Meestal een letterlijke tekst.

Gegevenstypen: teken, nchar, varcharof nvarchar. pattern_expression ondersteunt een maximale tekenlengte van 8.000 bytes.

start

Geef de beginpositie op voor de zoekopdracht in de zoekreeks. Optional. Het type is int of bigint.

De nummering is gebaseerd op 1, wat betekent dat het eerste teken in de expressie is 1 en de waarde moet worden >= 1. Als de beginexpressie kleiner is dan 1, wordt er een fout geretourneerd. Als de beginexpressie groter is dan de lengte van string_expression, retourneert NULLde functie . De standaardwaarde is 1.

occurrence

Een expressie (positief geheel getal) die aangeeft welk exemplaar van de patroonexpressie in de brontekenreeks moet worden doorzocht of vervangen. De standaardwaarde is 1. Hiermee wordt gezocht naar het eerste teken van de string_expression. Voor een positief geheel getal n wordt gezocht naar het ne exemplaar dat begint met het eerste teken na het eerste exemplaar van de pattern_expression, enzovoort.

flags

Een of meer tekens die de modifiers opgeven die worden gebruikt voor het zoeken naar overeenkomsten. Het type is varchar of teken, met maximaal 30 tekens.

Bijvoorbeeld ims. De standaardwaarde is c. Als er een lege tekenreeks wordt opgegeven (' '), wordt deze behandeld als de standaardwaarde ('c'). Geef c of andere tekenexpressies op. Als de vlag meerdere tegenstrijdige tekens bevat, gebruikt SQL Server het laatste teken.

Als u bijvoorbeeld opgeeft ic de regex hoofdlettergevoelige overeenkomsten retourneert.

Als de waarde een ander teken bevat dan de waarden in Ondersteunde vlagwaarden, retourneert de query een fout zoals in het volgende voorbeeld:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Ondersteunde vlagwaarden
Flag Description
i Hoofdlettergevoelig (standaard false)
m Modus met meerdere regels: ^ en $ begin-/eindregel vergelijken naast begin-/eindtekst (standaard false)
s Laten . overeenkomen \n (standaard false)
c Hoofdlettergevoelig (standaard true)

group

Hiermee geeft u op welke capture-groep (subexpressie) van een pattern_expression bepaalt de positie binnen string_expression die moet worden geretourneerd. De capturegroep (subexpressie) is een fragment van het patroon tussen haakjes en kan worden genest. De opnamegroepen worden genummerd in de volgorde waarin de haakjes links worden weergegeven. Het gegevenstype van de groep is geheel getal en de waarde moet groter dan of gelijk zijn aan 0 en mag niet groter zijn dan het aantal capturegroepen (subexpressies) in pattern_expression. De standaardgroepwaarde is 0, wat aangeeft dat de positie is gebaseerd op de tekenreeks die overeenkomt met het hele patroon.

Retourwaarde

String.

Examples

Pak de domeinnaam uit een e-mailadres.

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

Zoek het eerste woord in een zin die begint met een klinker.

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

Haal de laatste vier cijfers van een creditcardnummer op.

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