[NOT] LIKE (Entity SQL)
指定された文字列 String が指定されたパターンと一致するかどうかを判断します。
[NOT] LIKE ( expression )
引数
- match
結果が String になる Entity SQL 式。
- pattern
指定された String に一致するパターン。
- escape
エスケープ文字。
- NOT
LIKE の結果を否定することを指定します。
戻り値
string がパターンに一致する場合は true、一致しない場合は false。
解説
LIKE 演算子を使用する Entity SQL 式は、フィルター条件として等価性を使用する式と同様に評価されます。 ただし、LIKE 演算子を使用する Entity SQL 式には、リテラル文字とワイルドカード文字の両方を含めることができます。
次の表では、パターン string の構文について説明します。
ワイルドカード文字 | Description | 例 |
---|---|---|
% |
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 に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。
Follow the procedure in PrimitiveType 結果を返すクエリの実行方法 (EntityClient).
Pass the following query as an argument to the
ExecutePrimitiveTypeQuery
method:
-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Products contained a Name
-- with the value 'Down_Tube', the following query would find that
-- value.
Select value P.Name FROM AdventureWorksEntities.Products
as P where P.Name LIKE 'DownA_%' ESCAPE 'A'
-- LIKE
Select value P.Name FROM AdventureWorksEntities.Products
as P where P.Name like 'BB%'