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プロパティに 値を代入する場合も同様で、特殊文字のエスケープが必要になってきます。