2009-04-05 27 views
12

Microsoft JetのLIKE演算子に適切な複数文字のワイルドカードがあり、その設定にどのような設定が影響しますか?私は(Accessデータベース上の)Microsoft Jet上で動作する古いASPアプリケーションをサポートしていて、LIKE演算子で%記号を使用していますが、%文字が正規の文字として理解されているため、私は彼の複数キャラクターのワイルドカードが*であると仮定します。また、私は過去に、%の代わりに*を使ったクエリを使ってアプリケーションを書いたことはほぼ確信しています。最後に、アプリケーションとしてのMicrosoft Accessも*ではなく%でしか動作しません(ただし、どのように関連性があるかわかりません)。Microsoft Jetワイルドカード:アスタリスクまたはパーセント記号?

私はちょうど有用な結果なしでインターネットを検索するのに20分を費やしました。だから私はそれが有用であると思ったstackoverflowで考えました。誰かがすでにそれを知っている可能性がありますし、とにかく他のランダムディスカッションフォーラムよりも潜在的な答えをstackoverflowに保つ方が良いです。

答えて

14

ワイルドカード文字の動作は、使用されているインタフェースのANSI照会モードに依存しているということです。

ANSI-89クエリモード( 'traditional mode')は*文字を使用し、ANSI-92クエリモード( 'SQL Server互換モード')は%文字を使用します。これらのモードはACE/Jet固有のもので、ANSI/ISO SQL-89およびSQL-92標準に似ています。

ADOインターフェイス(OLE DB)は、常にANSI-92クエリモードを使用します。

DAOインターフェイスは常にANSI-89クエリモードを使用します。

ODBCを使用する場合、照会モードはExtendedAnsiSQLフラグで明示的に指定できます。

2003年以降のバージョンのMS Accessユーザーインターフェイスでは、いずれかのクエリモードを使用できます。したがって、特定の時点でどちらか一方であると想定しないでください(たとえば、クエリモード固有のワイルドカード文字を検証規則)。

ACE /ジェットSQL構文は、ANSI-92クエリモードの文字(%_)を可能ALIKEキーワードは、関係なく、インターフェースのクエリモードの、しかしではないALIKEキーワードのわずかな欠点を有しているSQLベース92互換(しかし、ALIKEは非常に移植性があります)。しかし、主な欠点は、ALIKEのキーワードが正式にサポートされていないことを理解していることです(私はそれが消えたり、すぐに動作が変わるとは想像もしませんが)。

4

DAOを使用している場合は、アスタリスク(および単一記号のプレースホルダには疑問符)を使用します。 ADOを使用している場合は、パーセント記号(およびアンダースコア)を使用します。

2

を使用し、そうではありませんどのようなワイルドカードを使用すべきかを明確にしてください。私は自然なJet SQLのもの(* /?)を想定していますが、ODBC経由でJetデータを使用することはないので、私は言うことができません。

Remou citesの記事によれば、コードでは、どのデータアクセスインターフェイスを使用するかによって異なります(ADO(Access内で使用する必要はない)、%/ _を使用し、DAO Jetのネイティブインターフェイスレイヤ)では、Jetのネイティブワイルドカード(* /?)を使用します。

Access内でSQLを実行するAccessのそれ以降のバージョンでは例外があります。私はそれがそれを追加したAccess 2002または2003であるかどうかはわかりませんが、現在はANSI SQL 92互換モードがあります。それを行うと、ワイルドカードは* /?の代わりに%/ _になります。しかし、ANSIモードを選択できるということは、Access自体の中でのみ適用されます。私たちは、92とDAOとODBC 89を使用するADOを使用して、異なるSQLインターフェイスを使用するために、別のデータインターフェイスライブラリを選択する必要があると通知しました。

+0

ACE/Jetには、ANSI-89クエリモード用のネイティブセットとANSI-92クエリモード用のネイティブセットの2種類のワイルドカードがあります。これらのクエリモードは、エンジン固有のもので、「Access自体の中にのみ」適用されません。 – onedaywhen

+0

Jetに対してSQLを実行するとき、ANSIモードをどのように設定しますか?私は本当に知っていない、私はアクセスを介して以外のジェットを使用することはありません。 –

+0

ところで、あなたの答えを反映するために投稿を編集します。 –

関連する問題