_ (Caractère générique - recherche de correspondance d'un seul caractère) (Transact-SQL)
S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance
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 obtenu.
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 obtenu.
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)