Sdílet prostřednictvím


REGEXP_SUBSTR (Transact-SQL)

Platí pro: SQL Server 2025 (17.x) Azure SQL Database Azure SQLManaged InstanceSQL Database v Microsoft Fabric

Vrátí jeden výskyt podřetězce řetězce, který odpovídá vzoru regulárního výrazu. Pokud se nenajde žádná shoda, vrátí NULLhodnotu .

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

Note

Regulární výrazy jsou k dispozici ve službě Azure SQL Managed Instance se zásadami aktualizaceSQL Serveru 2025 nebo Always-up-to-date.

Arguments

string_expression

Výraz řetězce znaků.

Může to být konstanta, proměnná nebo sloupec řetězce znaků.

Datové typy: char, nchar, varcharnebo nvarchar.

Note

Funkce REGEXP_LIKEa , REGEXP_COUNTREGEXP_INSTR podporují typy LOB (varchar(max) a nvarchar(max)) až 2 MB pro string_expression parametr.

pattern_expression

Vzor regulárního výrazu, který se má shodovat. Obvykle textový literál.

Datové typy: char, nchar, varcharnebo nvarchar. pattern_expression podporuje maximální délku znaků 8 000 bajtů.

start

Zadejte počáteční pozici pro hledání v rámci vyhledávacího řetězce. Optional. Typ je nebo bigint.

Číslování je 1, což znamená, že první znak výrazu je 1 a hodnota musí být >= 1. Pokud je počáteční výraz menší než 1, vrátí chybu. Pokud je počáteční výraz větší než délka string_expression, vrátí NULLfunkce . Výchozí hodnota je 1.

occurrence

Výraz (kladné celé číslo), který určuje výskyt vzorového výrazu ve zdrojovém řetězci, který má být prohledán nebo nahrazen. Výchozí hodnota je 1. Vyhledá první znak string_expression. Pro kladné celé číslo n vyhledá n. výskyt začínající prvním znakem za prvním výskytem pattern_expression atd.

flags

Jeden nebo více znaků, které určují modifikátory používané k hledání shod. Typ je varchar nebo znak, s maximálně 30 znaky.

Například ims. Výchozí hodnota je c. Pokud je zadaný prázdný řetězec (' '), bude považován za výchozí hodnotu ('c'). Zadejte c nebo jiné výrazy znaků. Pokud příznak obsahuje více protichůdných znaků, sql Server použije poslední znak.

Pokud například zadáte ic regulární výraz vrátí porovnávání s rozlišováním velkých a malých písmen.

Pokud hodnota obsahuje jiný znak než ty uvedené v podporované hodnoty příznaku, dotaz vrátí chybu jako v následujícím příkladu:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Podporované hodnoty příznaku
Flag Description
i Nerozlišují se malá a velká písmena (výchozí false)
m Režim více řádků: ^ a $ porovná počáteční/koncový řádek kromě počátečního/koncového textu (výchozí false)
s Nechte . odpovídat \n (výchozí false)
c Malá a velká písmena (výchozí true)

group

Určuje, která skupina zachycení (dílčí výraz) pattern_expression určuje pozici v rámci string_expression , která se má vrátit. Skupina zachycení (dílčí výraz) je fragment vzoru uzavřený v závorkách a může být vnořený.

Skupiny zachycení jsou očíslovány v pořadí, v jakém se zobrazí jejich levé závorky. Datový typ skupiny je int a hodnota musí být větší nebo rovna 0, a nesmí být větší než počet zachycených grup (podvýrazů) v pattern_expression. Výchozí hodnota skupiny je 0, což znamená, že pozice je založena na řetězci, který odpovídá celému vzoru.

Návratová hodnota

String.

Examples

Extrahujte název domény z e-mailové adresy.

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

Najděte první slovo ve větě, která začíná samohláskou.

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

Získá poslední čtyři číslice čísla platební karty.

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