Udostępnij za pomocą


_ (Symbol wieloznaczny — dopasuj jeden znak) (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Użyj znaku podkreślenia, aby dopasować dowolny pojedynczy znak _ w operacji porównania ciągów, która obejmuje dopasowywanie wzorców, takich jak LIKE i PATINDEX.

Examples

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Przykład podstawowy

Poniższy przykład zwraca wszystkie nazwy baz danych rozpoczynające się literą m i mają literę d jako trzecią literę. Znak podkreślenia określa, że drugi znak nazwy może być dowolną literą. Bazy model danych i msdb spełniają te kryteria. Baza master danych nie.

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

Oto zestaw wyników.

name
-----
model
msdb

Mogą istnieć dodatkowe bazy danych spełniające te kryteria.

Możesz użyć wielu podkreśleń, aby reprezentować wiele znaków. LIKE Zmiana kryteriów w celu uwzględnienia dwóch podkreśleń 'm__% obejmuje master bazę danych w wyniku.

B. Bardziej złożony przykład

W poniższym przykładzie _ użyto operatora , aby znaleźć wszystkie osoby w Person tabeli, które mają trzyliterowe imię, które kończy się na .an

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

C. Ucieczka znaku podkreślenia

Poniższy przykład zwraca nazwy stałych ról bazy danych, takich jak db_owner i db_ddladmin, ale zwraca również użytkownika dbo .

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

Podkreślenie w trzeciej pozycji znaku jest traktowane jako symbol wieloznaczny i nie filtruje tylko podmiotów zabezpieczeń rozpoczynających się od liter db_. Aby uniknąć podkreślenia, należy go ująć w nawiasy [_].

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

dbo Teraz użytkownik jest wykluczony.

Oto zestaw wyników.

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