Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: Sql Server 2025 (17.x)
Database
SQL di Azure Istanza
gestita di SQL di Azurein Microsoft Fabric
Indica se il criterio di espressione regolare corrisponde a una stringa.
REGEXP_LIKE
(
string_expression,
pattern_expression [ , flags ]
)
REGEXP_LIKE richiede il livello di compatibilità del database 170 e versioni successive. Se il livello di compatibilità del database è inferiore a 170, REGEXP_LIKE non è disponibile. Altre funzioni scalari dell'espressione regolare sono disponibili a tutti i livelli di compatibilità.
È possibile controllare il livello di compatibilità nella sys.databases vista o nelle proprietà del database. È possibile modificare il livello di compatibilità di un database con il comando seguente:
ALTER DATABASE [DatabaseName]
SET COMPATIBILITY_LEVEL = 170;
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.
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
Valore booleano.
true o false.
Remarks
Stima della cardinalità
Per migliorare l'accuratezza della stima della cardinalità della REGEXP_LIKE funzione, usa i ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP suggerimenti e ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP query per regolare i valori di selettività predefiniti. Per ulteriori informazioni, vedere i suggerimenti di query .
Questi suggerimenti di query si integrano anche con il feedback per la stima della cardinalità (CE). Il modello di feedback CE identifica automaticamente le query che utilizzano la REGEXP_LIKE funzione dove c'è una differenza significativa tra il numero stimato e quello effettivo delle righe. Applica quindi l'hint di selettività appropriato a livello di query per migliorare la qualità del piano senza richiedere input manuale.
Per disabilitare il comportamento di feedback automatico, abilitare il flag di traccia 16268.
Examples
Seleziona tutti i record dalla Employees tabella dove il nome inizia A e termina con Y:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
Seleziona tutti i record dalla Employees tabella dove il nome di battesimo inizia e A termina con Y, usando la modalità insensibile a maiuscole:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$', 'i');
Selezionare tutti i record dalla Orders tabella in cui la data dell'ordine è nel mese di febbraio 2020:
SELECT *
FROM Orders
WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
Selezionare tutti i record dalla Products tabella in cui il nome del prodotto contiene almeno tre vocali consecutive:
SELECT *
FROM Products
WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
Crea una tabella dei dipendenti con CHECK vincoli per le Email colonne e Phone_Number di e:
DROP TABLE IF EXISTS Employees;
CREATE TABLE Employees
(
ID INT IDENTITY (101, 1),
[Name] VARCHAR (150),
Email VARCHAR (320)
CHECK (REGEXP_LIKE (Email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')),
Phone_Number NVARCHAR (20)
CHECK (REGEXP_LIKE (Phone_Number, '^(\d{3})-(\d{3})-(\d{4})$'))
);