SQLクエリのパターンマッチング

不正確マッチングのためのワイルドカードの使用

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では、いくつかのワイルドカード式がサポートされています。

複雑なパターンにワイルドカードを組み合わせる

これらのワイルドカードを複雑なパターンで組み合わせて、より高度なクエリを実行します。 たとえば、アルファベットの前半からの文字で始まり、母音で終わらない名前を持つすべての従業員のリストを作成する必要があるとします。 次のクエリを使用できます。

SELECT * FROM employees from last_name LIKE '[am]%[^ aeiou]'

同様に、 _パターンの4つのインスタンスを使用して、正確に4文字からなる姓のすべての従業員のリストを作成できます。

SELECT * FROM employees where last_name LIKE '____'

ご存じのとおり、SQLパターンマッチング機能を使用すると、データベースユーザーは簡単なテキストクエリを超えて高度な検索操作を実行できます。