Condividi tramite


REGEXP_COUNT (Transact-SQL)

Si applica a: Sql Server 2025 (17.x) DatabaseSQL di Azure Istanza gestita di SQL di Azurein Microsoft Fabric

Conta il numero di volte in cui un criterio di espressione regolare viene confrontato in una stringa.

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

Note

Le espressioni regolari sono disponibili in Istanza gestita di SQL di Azure con i criteri di aggiornamentodi SQL Server 2025 o Always-up-to-date.

Arguments

string_expression

Espressione di una stringa di caratteri.

Può essere una costante, una variabile o una colonna di stringa di caratteri.

Tipi di dati: char, nchar, varcharo nvarchar.

Note

Le REGEXP_LIKEfunzioni , REGEXP_COUNTe REGEXP_INSTR supportano i tipi LOB (varchar(max) e nvarchar(max)) fino a 2 MB per il parametro string_expression .

pattern_expression

Criterio di espressione regolare da trovare. In genere un valore letterale di testo.

Tipi di dati: char, nchar, varcharo nvarchar. pattern_expression supporta una lunghezza massima di caratteri di 8.000 byte.

start

Specificare la posizione iniziale per la ricerca all'interno della stringa di ricerca. Optional. Il tipo è int o bigint.

La numerazione è basata su 1, ovvero il primo carattere nell'espressione è 1 e il valore deve essere >= 1. Se l'espressione iniziale è minore di 1, il pattern_expression restituito inizia al primo carattere specificato in string_expression. Se l'espressione iniziale è maggiore della lunghezza di string_expression, la funzione restituisce 0. Il valore predefinito è 1.

Se l'espressione iniziale è minore di 1, la query restituisce un errore.

flags

Uno o più caratteri che specificano i modificatori usati per la ricerca di corrispondenze. Il tipo è varchar o char, con un massimo di 30 caratteri.

Ad esempio, ims. Il valore predefinito è c. Se viene specificata una stringa vuota (' '), verrà considerata come valore predefinito ('c'). Specificare c o qualsiasi altra espressione di carattere. Se il flag contiene più caratteri contraddittori, SQL Server usa l'ultimo carattere.

Ad esempio, se si specifica ic l'espressione regolare restituisce la corrispondenza con distinzione tra maiuscole e minuscole.

Se il valore contiene un carattere diverso da quelli elencati in Valori flag supportati, la query restituisce un errore simile all'esempio seguente:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Valori dei flag supportati
Flag Description
i Senza distinzione tra maiuscole e minuscole (impostazione predefinita false)
m Modalità a più righe: ^ e $ corrispondenza della riga iniziale/finale oltre al testo di inizio/fine (impostazione predefinita false)
s Let . match \n (impostazione predefinita false)
c Distinzione tra maiuscole e minuscole (impostazione predefinita true)

Valore restituito

int

Examples

Contare il numero di volte in cui la lettera a viene visualizzata in ogni nome del prodotto.

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

Contare il numero di prodotti con un nome che termina con ing.

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

Contare il numero di prodotti con un nome che contiene tre consonanti consecutivi, ignorando la distinzione tra maiuscole e minuscole.

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