Dela via


förhandsversion av REGEXP_SUBSTR (Transact-SQL)

Gäller för: SQL Server 2025 (17.x) Förhandsversion av Azure SQL DatabaseAzure SQL Managed InstanceSQL Database i Förhandsversion av Microsoft Fabric

Note

Som en förhandsversionsfunktion omfattas tekniken som presenteras i den här artikeln av kompletterande användningsvillkor för Microsoft Azure Previews.

Returnerar en förekomst av en delsträng av en sträng som matchar mönstret för reguljära uttryck. Om ingen matchning hittas returneras NULL.

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

Note

Reguljära uttryck är tillgängliga i Azure SQL Managed Instance med sql Server 2025- eller always-up-to-date update-principen.

Arguments

string_expression

Ett uttryck för en teckensträng.

Kan vara en konstant, variabel eller kolumn med teckensträng.

Datatyper: char, nchar, varchareller nvarchar.

Note

Funktionerna REGEXP_LIKE, REGEXP_COUNToch REGEXP_INSTR stöder LOB-typer (varchar(max) och nvarchar(max)) upp till 2 MB för parametern string_expression .

pattern_expression

Mönster för reguljära uttryck som ska matchas. Vanligtvis en textliteral.

Datatyper: char, nchar, varchareller nvarchar. pattern_expression stöder en maximal teckenlängd på 8 000 byte.

start

Ange startpositionen för sökningen i söksträngen. Optional. Typen är int eller bigint.

Numreringen är 1-baserad, vilket innebär att det första tecknet i uttrycket är 1 och värdet måste vara >= 1. Om startuttrycket är mindre än 1returneras felet. Om startuttrycket är större än längden på string_expression returnerar NULLfunktionen . Standardvärdet är 1.

occurrence

Ett uttryck (positivt heltal) som anger vilken förekomst av mönsteruttrycket i källsträngen som ska sökas eller ersättas. Standardvärdet är 1. Söker efter det första tecknet i string_expression. För ett positivt heltal n söker den efter den n:e förekomsten som börjar med det första tecknet efter den första förekomsten av pattern_expression och så vidare.

flags

Ett eller flera tecken som anger de modifierare som används för att söka efter matchningar. Typen är varchar eller tecken, med högst 30 tecken.

Till exempel ims. Standardvärdet är c. Om en tom sträng (' ') anges behandlas den som standardvärdet ('c'). Ange c eller andra teckenuttryck. Om flaggan innehåller flera motstridiga tecken använder SQL Server det sista tecknet.

Om du till exempel anger ic returnerar regex skiftlägeskänslig matchning.

Om värdet innehåller ett annat tecken än de som anges i flagga som stödsreturnerar frågan ett fel som liknar följande exempel:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Flaggvärden som stöds
Flag Description
i Skiftlägesokänsligt (standard false)
m Flerradsläge: ^ och $ matcha start-/slutlinje utöver start-/sluttext (standard false)
s Låt . matcha \n (standard false)
c Skiftlägeskänsligt (standard true)

group

Anger vilken avbildningsgrupp (underuttryck) av en pattern_expression avgör positionen inom string_expression som ska returneras. Avbildningsgruppen (underuttryck) är ett fragment av mönster som omges av parenteser och kan kapslas. Avbildningsgrupperna numreras i den ordning som deras vänstra parenteser visas. Datatypen för gruppen är heltal och värdet måste vara större än eller lika med 0 och får inte vara större än antalet avbildningsgrupper (underuttryck) i pattern_expression. Standardgruppvärdet är 0, vilket anger att positionen baseras på strängen som matchar hela mönstret.

Returvärde

String.

Examples

Extrahera domännamnet från en e-postadress.

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

Hitta det första ordet i en mening som börjar med en vokal.

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

Hämta de sista fyra siffrorna i ett kreditkortsnummer.

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