LIKE演算子で検索を行う際のエスケープ


■クエリでLIKE演算子を使用する際は、 特殊文字「 [ 」「 % 」「 _ 」をエスケープしなければならない、 SqlServerでは「 [] 」にて特殊文字を囲む必要があるとのこと。 そこで、下記の様なFunctionを作ってみた。

Public Function SetEscapeChar(strtxt As String) As String

 Return strtxt _
  .Replace("[", "[[]") _
  .Replace("%", "[%]") _
  .Replace("_", "[_]") _
  .Replace("'", "''")

 End Function
LIKE演算子の条件部分だけ、このFunctionを通せば、とりあえずクエリは成立する。 ついでに「 ' 」についても置換を行っています。 強引に置換しているだけですが、これだけでも十分に事足りますので。。。 また、BindingNavigator.BindingSourceのFilterプロパティに 値を代入する場合も同様で、特殊文字のエスケープが必要になってきます。


関連リンク(情報源)

http://sakapon.wordpress.com/2010/06/21/sqlserverlike/

TOP ▲