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

Si applica a: SQL Server Database SQL di Azure Istanza 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%';

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)