_ (Platzhalterzeichen - einzelnes zu suchendes Zeichen) (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Verwenden Sie den Unterstrich _ zum Abgleichen eines beliebigen einzelnen Zeichen bei einem Zeichenfolgenvergleich, der einen Mustervergleich wie LIKE oder PATINDEX umfasst.

Beispiele

A: Einfaches Beispiel

Das folgende Beispiel gibt alle Datenbanknamen zurück, die mit dem Buchstaben m beginnen und d als dritten Buchstaben haben. Der Unterstrich gibt an, dass das zweite Zeichen ein beliebiger Buchstabe sein kann. Die Datenbanken model und msdb erfüllen diese Kriterien. Die Datenbank master erfüllt die Kriterien nicht.

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

Hier ist das Resultset.

name
-----
model
msdb

Sie verfügen möglicherweise über zusätzliche Datenbanken, die diese Kriterien erfüllen.

Mehrere Unterstriche können mehrere Zeichen darstellen. Wenn Sie die LIKE-Kriterien ändern, um zwei Unterstriche einzuschließen, fügt 'm__% dem Ergebnis die Masterdatenbank hinzu.

B: Komplexeres Beispiel

Im folgenden Beispiel wird der Operator _ zum Suchen aller Personen in der Person-Tabelle verwendet, die über einen aus drei Buchstaben bestehenden Vornamen verfügen, der auf an endet.

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

C: Versehen von Unterstrichen mit Escapezeichen

Im folgenden Beispiel werden die Namen von festen Datenbankrollen wie db_owner und db_ddladmin zurückgegeben, aber auch der Benutzer dbo.

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

Der Unterstrich an der dritten Zeichenposition wird als Platzhalter verwendet und filtert nicht nur nach Prinzipalen, die mit den Buchstaben db_ beginnen. Setzen Sie den Unterstrich in Klammern ([_]), um ihn mit dem Escapezeichen zu versehen.

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

Jetzt wird der Benutzer dbo ausgeschlossen.

Hier ist das Resultset.

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

Weitere Informationen

LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (Platzhalterzeichen – zu suchende(s) Zeichen)
[ ] (Platzhalterzeichen – zu suchende[s] Zeichen)
[^] (Platzhalterzeichen – nicht zu suchende(s) Zeichen)