_ (carattere jolly per corrispondenze di singoli caratteri) (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric
Usare il carattere di sottolineatura _ per individuare singoli caratteri in un'operazione di confronto stringhe con criteri di ricerca, ad esempio LIKE
e PATINDEX
.
Esempi
A. Esempio semplice
L'esempio seguente restituisce tutti i nomi di database che iniziano con la lettera m
e la cui terza lettera è la lettera d
. Il carattere di sottolineatura specifica che il secondo carattere del nome può essere qualsiasi lettera. I database model
e msdb
soddisfano questi criteri. Il database master
non li soddisfa.
SELECT name FROM sys.databases
WHERE name LIKE 'm_d%';
Il set di risultati è il seguente.
name
-----
model
msdb
È possibile che altri database soddisfino questi criteri.
È possibile usare più caratteri di sottolineatura per rappresentare più caratteri. La modifica del criterio LIKE
in modo da includere due caratteri di sottolineatura 'm__%
determinerà l'inclusione del database master nel risultato.
B. Esempio più complesso
Nell'esempio seguente viene usato l'operatore _ per trovare tutte le persone nella tabella Person
con un nome composto da tre lettere che termina con an
.
-- USE AdventureWorks2022;
SELECT FirstName, LastName
FROM Person.Person
WHERE FirstName LIKE '_an'
ORDER BY FirstName;
C: Escape del carattere di sottolineatura
L'esempio seguente restituisce i nomi dei ruoli predefiniti del database come db_owner
e db_ddladmin
, ma restituisce anche l'utente dbo
.
SELECT name FROM sys.database_principals
WHERE name LIKE 'db_%';
Il carattere di sottolineatura nella posizione di terzo carattere viene considerato come un carattere jolly e non viene applicato alcun filtro per restituire solo le entità che iniziano con le lettere db_
. Racchiudere il carattere di sottolineatura tra parentesi quadre [_]
.
SELECT name FROM sys.database_principals
WHERE name LIKE 'db[_]%';
Ora l'utente dbo
è escluso.
Il set di risultati è il seguente.
name
-------------
db_owner
db_accessadmin
db_securityadmin
...
Vedi anche
LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (Caratteri jolly per la corrispondenza)
[ ] (Caratteri jolly per la corrispondenza)
[^] (Caratteri jolly per la mancata corrispondenza dei caratteri)