LIKE演算子のエスケープと正規表現

.NETのプログラムからSQLを発行する場合、LIKE演算子のエスケープ処理をしてやる必要がありますが。
これを正規表現でやろうとするんですが、LIKE演算子内の特殊文字のエスケープと、正規表現のエスケープとでややこしいことに。


ググっても、そのものズバリの回答がなかなか見つからないので、試行錯誤(´Д`)


SQL Serverについてはこんな風にやっていたんですが。

string data = ...;

data = Regex.Replace( data, "([%\\*\\]\\[])", "[$1]" ).Replace( "'", "''" );
string sql = String.Format( "SELECT id, data FROM test WHERE data LIKE '%{0}%'", data );

で、Oracleについてはこんなんで良いのかしら?

string data = ...;

data = Regex.Replace( data, @"([\\%_%_])", "\\$1" ).Replace( "'", "''" );
string sql = String.Format( @"SELECT id, data FROM test WHERE data LIKE '%{0}%' ESCAPE '\'", data );

「%」と「_」が大文字でも特殊文字として扱われるということなので、大文字も対象。


正規表現は苦手なのであまり自信が無いです(´ω`)