REGEXP_COUNT (Transact-SQL)

Van toepassing op: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Analytics-eindpunt in Microsoft Fabric en Warehouse in Microsoft FabricSQL Database in Microsoft Fabric SQL Database in Microsoft Fabric

De REGEXP_COUNT scalaire reguliere expressiefunctie telt het aantal keren dat een regulier expressiepatroon in een string wordt gematcht.

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

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_* functies ondersteunen LOB-typen (varchar(max) en nvarchar(max)) tot 2 MB voor de string_expression-parameter .

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, begint de geretourneerde pattern_expression bij het eerste teken dat is opgegeven in string_expression. Als de beginexpressie groter is dan de lengte van string_expression, retourneert 0de functie . De standaardwaarde is 1.

Als de beginexpressie kleiner is dan 1, retourneert de query een fout.

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)

Retourwaarde

int

Platformondersteuning

  • In Azure SQL Managed Instance zijn T-SQL reguliere expressiefuncties beschikbaar met het SQL Server 2025- of Always-up-to-datumupdatebeleid.
  • T-SQL reguliere expressiefuncties zijn beschikbaar in Azure SQL Database, SQL-database in Fabric en vanaf SQL Server 2025.
  • T-SQL reguliere expressiefuncties zijn niet beschikbaar in SQL Server 2022 of eerdere versies.
  • T-SQL reguliere expressie-scalaire functies zijn beschikbaar als previewfunctie in Fabric Data Warehouse. Voor meer informatie, zie Reguliere expressiefuncties in Fabric Data Warehouse. T-SQL tabel-waarde functies met reguliere expressies zijn niet beschikbaar in Fabric Data Warehouse.

Examples

Tel hoe vaak de letter a wordt weergegeven in elke productnaam.

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

Tel hoeveel producten een naam hebben die eindigt op ing.

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

Tel hoeveel producten een naam hebben die drie opeenvolgende medeklinkers bevat, waarbij case wordt genegeerd.

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