_ (Caractère générique - recherche de correspondance d'un seul caractère) (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Base de données SQL dans Microsoft Fabric

Utilisez le trait de soulignement _ pour recherche un caractère unique dans une opération de comparaison de chaînes qui inclut des critères spéciaux, comme LIKE et PATINDEX.

Exemples

A. Exemple simple

L’exemple suivant retourne tous les noms de base de données qui commencent par la lettre m et dont la troisième lettre est d. Le caractère de soulignement indique que le deuxième caractère du nom peut être n’importe quelle lettre. Les bases de données model et msdb répondent à ces critères. La base de données master n’y répond pas.

SELECT name FROM sys.databases
WHERE name LIKE 'm_d%';

Voici le jeu de résultats.

name
-----
model
msdb

Vous pouvez avoir d’autres bases de données qui répondent à ces critères.

Vous pouvez utiliser plusieurs traits de soulignement pour représenter plusieurs caractères. Si vous modifiez les critères LIKE de sorte à inclure deux traits de soulignement 'm__%, alors la base de données MASTER est incluse dans les résultats.

B. Exemple plus complexe

Cet exemple utilise l’opérateur _ pour rechercher toutes les personnes figurant dans la table Person qui ont un prénom en trois lettres se terminant par an.

-- USE AdventureWorks2022;
  
SELECT FirstName, LastName  
FROM Person.Person  
WHERE FirstName LIKE '_an'  
ORDER BY FirstName;  

C. Échappement du caractère de soulignement

L’exemple suivant retourne les noms des rôles de base de données fixes comme db_owner et db_ddladmin, mais elle retourne également l’utilisateur dbo.

SELECT name FROM sys.database_principals
WHERE name LIKE 'db_%';

Le trait de soulignement en troisième position de caractère est considéré comme un caractère générique et ne permet pas de filtrer seulement les principaux qui commencent par les lettres db_. Pour échapper le trait de soulignement, placez-le entre crochets [_].

SELECT name FROM sys.database_principals
WHERE name LIKE 'db[_]%';

Maintenant, l’utilisateur dbo est exclu.

Voici le jeu de résultats.

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

Voir aussi

LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (Caractère générique - recherche de correspondance de caractère(s))
[ ] (Caractère générique - recherche de correspondance de caractère(s))
[^] (Caractère générique - caractères à ne pas faire correspondre)