Partager via


_ (Caractère générique - faire correspondre un caractère) (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Utilisez le caractère _ de soulignement pour faire correspondre n’importe quel caractère unique dans une opération de comparaison de chaînes qui implique la mise en correspondance des modèles, comme LIKE et PATINDEX.

Examples

Les exemples de code de cet article utilisent les bases de données d'exemple AdventureWorks2025 ou AdventureWorksDW2025, que vous pouvez télécharger à partir de la page d'accueil Microsoft SQL Server Samples and Community Projects.

A. Exemple de base

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 des bases de données supplémentaires qui répondent à ces critères.

Vous pouvez utiliser plusieurs traits de soulignement pour représenter plusieurs caractères. La modification des LIKE critères pour inclure deux traits 'm__% de soulignement inclut la master base de données dans le résultat.

B. Exemple plus complexe

L’exemple suivant utilise l’opérateur _ pour rechercher toutes les personnes de la Person table, qui ont un prénom à trois lettres qui se termine par an.

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 tels que db_owner et db_ddladmin, mais il retourne également l’utilisateur dbo .

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

Le trait de soulignement dans la troisième position de caractère est pris comme caractère générique et ne filtre pas uniquement les principaux commençant par les lettres db_. Pour échapper au 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
...