280

likeを使用してストアドプロシージャでアイテムをフィルタリングしようとしています。列はvarchar(15)です。フィルタリングしようとしているアイテムの名前には角かっこが含まれています。

例: WC[R]S123456

私がやった場合、LIKE 'WC[R]S123456'それは何も返しません。

ESCAPEでキーワードを使用する方法についていくつかの情報を見つけましLIKEたが、角かっこを通常の文字列として扱うために使用する方法がわかりません。

4

10 に答える 10

380
LIKE 'WC[[]R]S123456' 

また

LIKE 'WC\[R]S123456' ESCAPE '\'

動作するはずです。

于 2009-01-13T15:56:17.800 に答える
147

リテラルに一致させたいとしましょうits[brac]et

]とペアになっている場合にのみ特別な意味を持つため、 をエスケープする必要はありません[

[したがって、問題を解決するにはエスケープで十分です。[ に置き換えることで エスケープできます[[]

于 2011-01-18T09:52:04.610 に答える
22

これが私が実際に使用したものです:

like 'WC![R]S123456' ESCAPE '!'
于 2009-01-13T16:03:07.163 に答える
17

ESCAPEキーワードは、通常はワイルドカードである%や_などの特殊文字を検索する必要がある場合に使用されます。ESCAPEを指定すると、SQLは文字通り%と_を検索します。

これがいくつかの例を含む良い記事です

SELECT columns FROM table WHERE 
    column LIKE '%[[]SQL Server Driver]%' 

-- or 

SELECT columns FROM table WHERE 
    column LIKE '%\[SQL Server Driver]%' ESCAPE '\'
于 2009-01-13T16:03:40.810 に答える
1

「\」またはキーボードの別の文字の代わりに、キーボードにない特殊文字を使用することもできます。ユースケースによっては、ユーザー入力を誤ってエスケープ文字として使用したくない場合に、これが必要になる場合があります。

于 2013-01-30T17:33:43.197 に答える