Udostępnij za pomocą


REGEXP_COUNT (Transact-SQL)

Dotyczy: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database w usłudze Microsoft Fabric

Zlicza liczbę dopasowań wzorca wyrażenia regularnego w ciągu.

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

Note

Wyrażenia regularne są dostępne w usłudze Azure SQL Managed Instance z zasadami aktualizacjiprogramu SQL Server 2025 lub Always-up-to-date.

Arguments

string_expression

Wyrażenie ciągu znaków.

Może być stałą, zmienną lub kolumną ciągu znaków.

Typy danych: char, nchar, varcharlub nvarchar.

Note

Funkcje REGEXP_LIKE, REGEXP_COUNTi REGEXP_INSTR obsługują typy LOB (varchar(max) i nvarchar(max)) do 2 MB dla parametru string_expression .

pattern_expression

Wzorzec wyrażenia regularnego do dopasowania. Zazwyczaj literał tekstu.

Typy danych: char, nchar, varcharlub nvarchar. pattern_expression obsługuje maksymalną długość znaków wynoszącą 8000 bajtów.

start

Określ pozycję początkową wyszukiwania w ciągu wyszukiwania. Optional. Typ to int lub bigint.

Numerowanie jest oparte na 1, co oznacza, że pierwszy znak w wyrażeniu jest 1, a wartość musi być >= 1. Jeśli wyrażenie początkowe jest mniejsze niż 1, zwracany pattern_expression zaczyna się od pierwszego znaku określonego w string_expression. Jeśli wyrażenie początkowe jest większe niż długość string_expression, funkcja zwraca 0wartość . Wartość domyślna to 1.

Jeśli wyrażenie początkowe jest mniejsze niż 1, zapytanie zwraca błąd.

flags

Co najmniej jeden znak określający modyfikatory używane do wyszukiwania dopasowań. Typem jest varchar lub znak, z maksymalnie 30 znakami.

Na przykład ims. Wartość domyślna to c. Jeśli zostanie podany pusty ciąg (' '), będzie on traktowany jako wartość domyślna ('c'). Podaj c lub inne wyrażenia znaków. Jeśli flaga zawiera wiele sprzecznych znaków, program SQL Server używa ostatniego znaku.

Jeśli na przykład określisz ic regex zwraca dopasowanie uwzględniające wielkość liter.

Jeśli wartość zawiera znak inny niż wymienione na Obsługiwane wartości flagi, zapytanie zwraca błąd podobny do następującego przykładu:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Obsługiwane wartości flagi
Flag Description
i Bez uwzględniania wielkości liter (wartość domyślna false)
m Tryb wielowierszowy: ^ i $ dopasuj wiersz początkowy/końcowy oprócz tekstu rozpoczynającego/końcowego (wartość domyślna false)
s Dopasuj .\n (ustawienie domyślne false)
c Uwzględniana wielkość liter (wartość domyślna true)

Wartość zwracana

int

Examples

Zlicz, ile razy litera a pojawia się w każdej nazwie produktu.

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

Zlicz, ile produktów ma nazwę kończącą się ing.

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

Zlicz, ile produktów ma nazwę zawierającą trzy kolejne spółgłoski, ignorując przypadek.

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