Access で LIKE 演算子で0文字以上の文字を表す時は * を使いますよね。
ところが、JETエンジン使って mdb にアクセスする OLEDB経由の ADO.Net だと % という純粋なSQLに近い形しないとダメなようです。
/*Accessだとヒットする。 OLEDB経由だとヒットしない*/
SELECT *
FROM Customer
WHERE Address LIKE '*京都*'
/*Accessだとヒットしない。 OLEDB経由だとヒットする*/
SELECT *
FROM Customer
WHERE Address LIKE '%京都%'
Access でテスト用のクエリを書いて、.Net のコードに移植してたんですが、これに気付かずちょっとハマってしまいした。
Visual Studio 上のサーバエクスプローラから mdf ファイルを指定し、クエリたたけば OLEDB 経由になるので、これからはこっち使ったほうが安全ですね。
この仕様については、Microsoft Jet SQL と ANSI SQL との比較で解説されてます。
下記の引用部分が、その仕様について言ってるところですね。
ANSI SQL のワイルドカード文字を使用できるのは、Jet 4.x と Microsoft OLE DB Provider for Jet を組み合わせて使う場合だけです。Microsoft Access または DAO を介して ANSI SQL のワイルドカード文字を使うと、リテラルとして解釈されます。Microsoft OLE DB Provider for Jet と Jet 4.x を使用しているときは、Jet SQL のワイルドカード文字がリテラルとして解釈されます。