_ (carattere jolly per corrispondenze di singoli caratteri) (Transact-SQL)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di Azure

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%';

Questo è il set di risultati.

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.

Questo è il set di risultati.

name
-------------
db_owner
db_accessadmin
db_securityadmin
...

Vedere anche

LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (carattere jolly)
[ ] (carattere jolly)
[^] (carattere jolly per la mancata corrispondenza)