ACCESS2003とVB6でのSQLについて


へなちょこ  2004-12-07 18:37:10  No: 87193

環境  :  Access2003とVB6 SP5
データソースを使ってRDOでAccessからデータを取得しています。
この時のSQLでの質問ですが、
LIKEが不安定で理由が分かりません。
SQLの条件で  WHERE 商品名 LIKE '%て%'  とします。
これで、実際は商品名はカタカナです。
普段は、「て」で取得できます。
でもたまに、データがカタカナだからなのか
「て」で取得できなくなって、「テ」でないと取得できない時があります。
それに、Accessの場合は、ワイルドカードって「*」ではないのかな?
とも思うのです。
どうか教えてください。お願い致します。


魔界の仮面弁士  2004-12-07 19:39:18  No: 87194

> LIKEが不安定で理由が分かりません。

Jet 4.0 Service Pack 8 は、あててありますか?

> それに、Accessの場合は、ワイルドカードって「*」ではないのかな?

Access VBAのLike演算子では、「*」をワイルドカードとして使えます。

Accessのクエリデザイナ画面で、Jet SQL の LIKE 演算子が
「*」になるか「%」になるかという意味なら、Access 2000以下では
「*」固定ですが、2002以上ではAccess側の設定次第となります。

DAOから、Jet SQLを扱うときの話であれば、常にANSI-89 SQLモードが
使われますので、「*」固定です。

ADOから、Microsoft.Jet.OLEDB.4.0 経由で Jet SQL を扱うなら、
常に ANSI-92 SQLモードになりますので、こちらは「%」固定です。

ADOのRecordsetオブジェクトのFilterプロパティを使うときの話なら、
これは「*」「%」「_」は全て同じ意味を持ちます。


へなちょこ  2004-12-07 20:07:05  No: 87195

サービスパックはあててあります。

RDOの場合は、「%」になるのでしょうか?

大体の場合は、「て」でデータが「て」「テ」「テ」でも取得できますが、
時々、「て」は「て」のみ、「テ」は「テ」のみ、「テ」は「テ」のみになります。
プログラムを落としてみると、元に戻ったりします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加