_ (萬用字元 - 符合單一字元) (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

使用底線字元 _ 在涉及模式比對 (如 LIKEPATINDEX) 的字串比較運算式中,比對任何單一字元。

範例

A:簡單範例

以下範例傳回開頭為字母 m 且第三個字母具有 d 的所有資料庫名稱。 底線字元指定名稱的第二個字元可以是任何字母。 modelmsdb 資料庫符合此原則。 master 資料庫則不符合。

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

以下為結果集。

name
-----
model
msdb

您可能具有符合此原則的其他資料庫。

您可以使用多個底線來代表多個字元。 將 LIKE 原則變更為包含兩個底線 'm__%,就會在結果中包含 master 資料庫。

B:更複雜的範例

下列範例會使用 _ 運算子來尋找在 Person 資料表中,所有名字都是三個字母且結尾是 an 的人員。

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

C:逸出底線字元

下列範例傳回固定資料庫角色的名稱,如 db_ownerdb_ddladmin,但它也會傳回 dbo 使用者。

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

第三個字元位置中的底線視為萬用字元,不會作為開頭是 db_ 字母的唯一原則篩選。 若要逸出底線,可用中括號 [_] 包圍它。

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

現在已經排除 dbo 使用者。

以下為結果集。

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

另請參閱

LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (萬用字元 - 相符的字元)
[ ] (萬用字元 - 相符的字元)
[^] (萬用字元 - 不相符的字元)