Condividi tramite


REGEXP_REPLACE (Transact-SQL)

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

Restituisce una stringa di origine modificata sostituita da una stringa di sostituzione, in cui è stata trovata l'occorrenza del criterio di espressione regolare. Se non vengono trovate corrispondenze, la funzione restituisce la stringa originale.

REGEXP_REPLACE
(
    string_expression,
    pattern_expression [ , string_replacement [ , start [ , occurrence [ , 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.

string_replacement

Espressione stringa che specifica la stringa di sostituzione per le sottostringhe corrispondenti e sostituisce le sottostringhe corrispondenti al criterio. Il string_replacement può essere di tipi di dati char, varchar, nchar e nvarchar. Se viene specificata una stringa vuota (''), la funzione rimuove tutte le sottostringhe corrispondenti e restituisce la stringa risultante. La stringa di sostituzione predefinita è la stringa vuota ('').

Il string_replacement può contenere \n, dove n è compreso tra 1 e 9, per indicare che la sottostringa di origine corrispondente al gruppo tra parentesi n (sottoespressione) del criterio deve essere inserita e può contenere & per indicare che deve essere inserita la sottostringa corrispondente all'intero criterio. Scrivere \ se è necessario inserire una barra rovesciata letterale nel testo di sostituzione.

Per esempio

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) \2-\3')

Returns:

(123) 456-7890

Se l'oggetto specificato \n in string_replacement è maggiore del numero di gruppi nella pattern_expression, la funzione ignora il valore.

Per esempio:

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) (\4)-xxxx')

Returns:

(123) ()-xxxx

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, restituisce l'errore . Se l'espressione iniziale è maggiore della lunghezza di string_expression, la funzione restituisce string_expression. Il valore predefinito è 1.

occurrence

Espressione (numero intero positivo) che specifica quale occorrenza dell'espressione del criterio all'interno della stringa di origine deve essere eseguita la ricerca o la sostituzione. Il valore predefinito è 1. Cerca il primo carattere del string_expression. Per un numero intero npositivo, cerca l'occorrenza nth che inizia con il primo carattere dopo la prima occorrenza del pattern_expression e così via.

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

Expression.

Examples

Sostituire tutte le occorrenze di a o e con X nei nomi dei prodotti.

SELECT REGEXP_REPLACE(PRODUCT_NAME, '[ae]', 'X', 1, 0, 'i')
FROM PRODUCTS;

Sostituire la prima occorrenza di cat o dog con pet nelle descrizioni dei prodotti

SELECT REGEXP_REPLACE(PRODUCT_DESCRIPTION, 'cat|dog', 'pet', 1, 1, 'i')
FROM PRODUCTS;

Sostituire le ultime quattro cifre dei numeri di telefono con asterischi

SELECT REGEXP_REPLACE(PHONE_NUMBER, '\d{4}$', '****')
FROM CUSTOMERS;