LIKE式の特殊文字をエスケープするには、それらの前にエスケープ文字を付けます。 ESCAPEキーワードで使用するエスケープ文字を選択できます。 (MSDN参照)
たとえば、これはエスケープ文字として\を使用して、%記号をエスケープします:
select * from table where myfield like '%15\% off%' ESCAPE '\'
文字列に含まれる文字がわからず、ワイルドカードとして扱いたくない場合は、すべてのワイルドカード文字の前にエスケープ文字を付けることができます(例:
)。set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(エスケープ文字もエスケープする必要があることに注意してください。それが内側のreplace
であることを確認してください。 したがって、他のreplace
から追加されたものをエスケープしないでください ステートメント)。次に、次のようなものを使用できます:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
また、@ myString変数は文字列を置き換えると長くなるため、より多くのスペースを割り当てることを忘れないでください。