[ ] (ワイルドカード - 一致する文字列) (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

角かっこ [ ] で指定された範囲または集合の任意の 1 文字に一致します。 これらのワイルドカード文字は、LIKEPATINDEX などのパターン検索を含む文字列比較で使用できます。

A: 簡単な例

次の例では、文字 m で始まる名前が返されます。 [n-z] は、2 番目の文字が n から z の範囲に含まれる必要があることを指定します。 パーセントのワイルドカード % は、2 文字に 0 個以上の任意の文字列が続くことを指定します。 model データベースと msdb データベースがこの条件を満たしています。 master データベースは条件を満たさず、結果セットから除外されます。

SELECT name FROM sys.databases
WHERE name LIKE 'm[n-z]%';

結果セットは次のようになります。

name
-----
model
msdb

他にも該当するデータベースがインストールされている可能性があります。

B: より複雑な例

次の例では、4 桁の郵便番号付きの住所を持つ Adventure Works のすべての従業員の ID と名前を [] 演算子を使用して検索します。

-- Uses AdventureWorks  
  
SELECT e.BusinessEntityID, p.FirstName, p.LastName, a.PostalCode  
FROM HumanResources.Employee AS e  
INNER JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID  
INNER JOIN Person.BusinessEntityAddress AS ea ON e.BusinessEntityID = ea.BusinessEntityID  
INNER JOIN Person.Address AS a ON a.AddressID = ea.AddressID  
WHERE a.PostalCode LIKE '[0-9][0-9][0-9][0-9]';  

結果セットは次のようになります。

EmployeeID      FirstName      LastName      PostalCode  
----------      ---------      ---------     ----------  
290             Lynn           Tsoflias      3000  

C: 範囲と 1 文字を組み合わせたセットを使用する

ワイルドカード セットには、1 文字と範囲の両方を含めることができます。 次の例では、[] 演算子を使用して、1 つの数字と一連の特殊文字で始まる文字列を検索します。

SELECT [object_id], OBJECT_NAME(object_id) AS [object_name], name, column_id 
FROM sys.columns 
WHERE name LIKE '[0-9!@#$.,;_]%';

結果セットは次のようになります。

object_id     object_name                         name  column_id
---------     -----------                         ----  ---------
615673241     vSalesPersonSalesByFiscalYears      2002  5
615673241     vSalesPersonSalesByFiscalYears      2003  6
615673241     vSalesPersonSalesByFiscalYears      2004  7
1591676718    JunkTable                           _xyz  1

参照

LIKE (Transact-SQL)
PATINDEX (Transact-SQL)
% (ワイルドカード - 一致する文字列) (Transact-SQL)
[^] (ワイルドカード - 一致しない文字列) (Transact-SQL)
_ (ワイルドカード - 1 文字に一致) (Transact-SQL)