不正確マッチングのためのワイルドカードの使用
SQLパターンマッチングを使用すると、探している単語やフレーズがわからない場合でも、データパターンを検索できます。 この種のSQLクエリは、パターンを正確に指定するのではなく、パターンに一致させるためにワイルドカード文字を使用します。 たとえば、ワイルドカード "C%"を使用して、大文字のCで始まる任意の文字列に一致させることができます。
LIKE演算子の使用
SQLクエリでワイルドカード式を使用するには、WHERE句でLIKE演算子を使用し、パターンを一重引用符で囲みます。
%ワイルドカードを使用した簡易検索の実行
最後の名前が文字Cで始まるデータベース内の従業員を検索するには、次のTransact-SQL文を使用します。
SELECT * FROM employees where where last_name LIKE 'C%'NOTキーワードを使用したパターンの省略
パターンと一致しないレコードを選択するには、NOTキーワードを使用します。 たとえば、このクエリは、名前が最後にCで始まらないすべてのレコードを返します。
SELECT * FROM employees from last_name NOT LIKE 'C%'%ワイルドカードを2回使用してパターンをどこにでも一致させる
%ワイルドカードの2つのインスタンスを使用して、特定のパターンをどこにでも一致させます。 この例では、姓の任意の場所にCを含むすべてのレコードを返します。
SELECT * FROM employees WHERE last_name LIKE '%C%'特定の位置でのパターンマッチの検索
ワイルドカードを使用して特定の場所にデータを戻します。 この例は、Cが姓の列の3番目の位置にある場合にのみ一致します。
SELECT * FROM employees where where last_name LIKE '_ _C%'Transact SQLでサポートされているワイルドカード式
Transact SQLでは、いくつかのワイルドカード式がサポートされています。
- %ワイルドカードは、任意のタイプの0個以上の文字と一致し、パターンの前後にワイルドカードを定義するために使用できます。 あなたがDOSパターンのマッチングに慣れているなら、その構文の*ワイルドカードと同等です。
- _ワイルドカードは、どのタイプの文字も1つだけ一致します。 それはのですか? DOSパターンマッチングのワイルドカード
- 角カッコで囲んで文字のリストを指定します。 たとえば、ワイルドカード[aeiou]は任意の母音に一致します。
- 範囲を角括弧で囲んで文字の範囲を指定します。 たとえば、ワイルドカード[am]は、アルファベットの前半にある任意の文字と一致します。
- カラット文字を開き角括弧のすぐ内側に含めることによって、一連の文字を無効にします。 たとえば、 [^ aeiou]は非母音文字に一致し、 [^ am]はアルファベットの前半にない文字に一致します。
複雑なパターンにワイルドカードを組み合わせる
これらのワイルドカードを複雑なパターンで組み合わせて、より高度なクエリを実行します。 たとえば、アルファベットの前半からの文字で始まり、母音で終わらない名前を持つすべての従業員のリストを作成する必要があるとします。 次のクエリを使用できます。
SELECT * FROM employees from last_name LIKE '[am]%[^ aeiou]'同様に、 _パターンの4つのインスタンスを使用して、正確に4文字からなる姓のすべての従業員のリストを作成できます。
SELECT * FROM employees where last_name LIKE '____'ご存じのとおり、SQLパターンマッチング機能を使用すると、データベースユーザーは簡単なテキストクエリを超えて高度な検索操作を実行できます。