Sdílet prostřednictvím


REGEXP_MATCHES (Transact-SQL)

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

Vrátí tabulku zachycených podřetězců, které odpovídají regulárnímu výrazovému vzoru řetězci. Pokud se nenajde žádná shoda, vrátí funkce žádný řádek.

REGEXP_MATCHES
(
    string_expression,
    pattern_expression [ , flags ]
)

Vyžaduje úroveň kompatibility databáze 170. Pokud chcete nastavit úroveň kompatibility databáze, projděte si úroveň kompatibility ALTER DATABASE (Transact-SQL).

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ů.

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)

Returns

Vrátí tabulkový výsledek následujícím způsobem:

Název sloupce Datový typ Description
match_id bigint Posloupnost odpovídajících slov.
start_position int Počáteční pozice indexu
end_position int Koncová pozice indexu
match_value Stejný typ jako string_expression nebo varchar Odpovídající výraz.
substring_matches json Dokument JSON popisující shodu

Examples

Vrátí tabulkové výsledky, 'Learning #AzureSQL #AzureSQLDB' které začínají znakem # následovaným jedním nebo více alfanumerickými znaky (A-Z, a-z, 0-9) nebo podtržítky (_).

SELECT *
FROM REGEXP_MATCHES ('Learning #AzureSQL #AzureSQLDB', '#([A-Za-z0-9_]+)');
match_id start_position end_position match_value substring_matches
1        10             18           #AzureSQL   [{"value":"AzureSQL","start":11,"length":8}]
2        20             30           #AzureSQLDB [{"value":"AzureSQLDB","start":21,"length":10}]

Vrátí řetězce, ABC které odpovídají řetězcům, které začínají písmenem A následovaným přesně dvěma znaky.

SELECT *
FROM REGEXP_MATCHES ('ABC', '^(A)(..)$');
match_id start_position end_position match_value substring_matches
1        1              3            ABC         [{"value":"A","start":1,"length":1},{"value":"BC","start":2,"length":2}]