指定された文字列 String が指定されたパターンと一致するかどうかを判断します。
[NOT] LIKE ( expression )
引数
- match
結果が String になる Entity SQL 式。
- pattern
指定された String に一致するパターン。
- escape
エスケープ文字。
- NOT
LIKE の結果を否定することを指定します。
戻り値
string がパターンに一致する場合は true、一致しない場合は false。
解説
LIKE 演算子を使用する Entity SQL 式は、フィルタ条件として等価性を使用する式と同様に評価されます。ただし、LIKE 演算子を使用する Entity SQL 式には、リテラル文字とワイルドカード文字の両方を含めることができます。
次の表では、パターン string の構文について説明します。
ワイルドカード文字 | 説明 | 例 |
---|---|---|
% |
0 個またはそれ以上の文字で構成される任意の string です。 |
|
_ (アンダースコア) |
任意の 1 文字です。 |
|
[ ] |
指定した範囲 ([a-f]) またはセット ([abcdef]) にある任意の 1 文字です。 |
|
[^] |
指定した範囲 ([^a-f]) またはセット ([^abcdef]) にない任意の 1 文字です。 |
|
[!メモ]
Entity SQL の LIKE 演算子および ESCAPE 句は、System.DateTime または System.Guid 値には適用できません。
LIKE では、ASCII パターン検索と Unicode パターン検索がサポートされています。すべてのパラメータが ASCII 文字の場合は、ASCII パターン検索が行われます。1 つまたは複数の引数が Unicode の場合は、すべての引数が Unicode に変換され、Unicode パターン検索が行われます。LIKE で Unicode を使用する場合、後続する空白は意味を持ちます。しかし、Unicode 以外のデータの場合、後続する空白は意味を持ちません。Entity SQL のパターン文字列構文は、Transact-SQL のパターン文字列構文と同じです。
パターンは、標準の文字とワイルドカード文字を含むことができます。パターン検索時に、標準の文字は string に指定された文字と正確に一致する必要があります。しかし、ワイルドカード文字は文字列の任意の部分と一致することができます。ワイルドカード文字を使用する場合、LIKE 演算子は = や != などの文字列比較演算子よりも柔軟です。
[!メモ]
特定のプロバイダを対象とする場合は、プロバイダ固有の拡張機能を使用できます。ただし、たとえばコンストラクタの扱いは、プロバイダによって異なる場合があります。SqlServer では、[first-last] および [^first-last] のパターンがサポートされています。前者は先頭と末尾の間の 1 文字が完全に一致し、後者は先頭と末尾の間以外の 1 文字が完全に一致します。
エスケープ
前のセクションの表で説明しているように、ESCAPE 句を使用することで、1 文字以上の特殊なワイルドカード文字を含む文字列を検索できます。たとえば、複数のドキュメントのタイトルにリテラル "100%" が含まれており、そのドキュメントすべてを検索するとします。パーセント (%) 文字はワイルドカード文字であるため、検索を正常に実行するには Entity SQL ESCAPE 句を使用してエスケープする必要があります。このフィルタの例は次のとおりです。
"title like '%100!%%' escape '!'"
この検索式では、感嘆符文字 (!) の直後のパーセント ワイルドカード文字 (%) は、ワイルドカード文字としてではなく、リテラルとして処理されます。Entity SQL ワイルドカード文字および角かっこ ([ ]
) 文字を除き、任意の文字をエスケープ文字として使用できます。前の例では、感嘆符 (!) 文字はエスケープ文字です。
例
次の 2 つの Entity SQL クエリでは、LIKE および ESCAPE 演算子を使用して、指定された文字列が指定されたパターンと一致するかどうかを判断します。最初のクエリは、文字列 Down_
で始まる Name
を検索します。アンダースコア (_
) はワイルドカード文字であるため、このクエリは ESCAPE オプションを使用します。ESCAPE オプションを指定しないと、単語 Down
の後にアンダースコア文字以外の 1 文字で始まる Name
値もクエリで検索してしまいます。このクエリは、AdventureWorks Sales Model に基づいています。このクエリをコンパイルして実行するには、次の手順を実行します。
「PrimitiveType 結果を返すクエリの実行方法 (EntityClient)」の手順に従います。
次のクエリを引数として
ExecutePrimitiveTypeQuery
メソッドに渡します。
// LIKE and ESCAPE
// If an AdventureWorksEntities.Product contained a Name
// with the value 'Down_Tube', the following query would find that
// value.
Select value P.Name FROM AdventureWorksEntities.Product
as P where P.Name LIKE 'DownA_%' ESCAPE 'A'
// LIKE
Select value P.Name FROM AdventureWorksEntities.Product
as P where P.Name like 'BB%'