Sdílet prostřednictvím


REGEXP_COUNT (Transact-SQL)

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

Spočítá, kolikrát se v řetězci shoduje vzor regulárního výrazu.

REGEXP_COUNT
(
    string_expression,
    pattern_expression [ , start [ , flags ] ]
)

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ácené pattern_expression začíná prvním znakem zadaným v string_expression. Pokud je počáteční výraz větší než délka string_expression, vrátí 0funkce . Výchozí hodnota je 1.

Pokud je počáteční výraz menší než 1, dotaz vrátí chybu.

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)

Návratová hodnota

int

Examples

Spočítejte, kolikrát se písmeno a zobrazí v každém názvu produktu.

SELECT PRODUCT_NAME,
       REGEXP_COUNT(PRODUCT_NAME, 'a') AS A_COUNT
FROM PRODUCTS;

Spočítejte, kolik produktů má název, který končí ing.

SELECT COUNT(*)
FROM PRODUCTS
WHERE REGEXP_COUNT(PRODUCT_NAME, 'ing$') > 0;

Spočítejte, kolik produktů má název, který obsahuje tři po sobě jdoucí souhlásky a ignoruje malá a velká písmena.

SELECT COUNT(*)
FROM PRODUCTS
WHERE REGEXP_COUNT(PRODUCT_NAME, '[^aeiou]{3}', 1, 'i') > 0;