Microsoft Jet のワイルドカード:アスタリスクまたはパーセント記号?

StackOverflow https://stackoverflow.com/questions/719115

  •  23-08-2019
  •  | 
  •  

質問

Microsoft Jet の LIKE 演算子の適切な複数文字ワイルドカードは何ですか?また、それに影響する設定 (存在する場合) は何ですか?Microsoft Jet (Access データベース上) で実行される古い ASP アプリケーションをサポートしており、LIKE 演算子で % 記号を使用していますが、% 記号が通常の記号として理解されるため、明らかに問題が発生しているお客様がいます。文字であり、彼の複数文字ワイルドカードは * であると仮定します。また、過去に % の代わりに * を使用したクエリを含むアプリケーションを作成したことがあるはずです。最後に、Microsoft Access (アプリケーションとして) も * のみで動作し、% では動作しません (ただし、それがどの程度関連しているかはわかりません)。

インターネットで 20 分ほど検索しましたが、有益な結果は得られませんでした。そこで、stackoverflow で質問するのが役立つだろうと考えました。誰かがすでにそれを知っているかもしれませんが、とにかく、他のランダムなディスカッションフォーラムよりも、潜在的な答えをスタックオーバーフローに保存する方が良いでしょう。

役に立ちましたか?

解決

率直な答えは、ワイルドカード文字の動作は、使用されているインターフェイスの ANSI クエリ モードに依存するということです。

ANSI-89 クエリ モード (「従来のモード」) では、 * 文字、ANSI-92 クエリ モード (「SQL Server 互換モード」) は % キャラクター。これらのモードは ACE/Jet に固有であり、ANSI/ISO SQL-89 および SQL-92 標準との類似点はわずかです。

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

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

ODBC を使用する場合は、クエリ モードを明示的に指定できます。 拡張AnsiSQL フラグ。

2003 バージョン以降の MS Access ユーザー インターフェイスでは、どちらのクエリ モードも使用できるため、常にどちらか一方であると想定しないでください (例:検証ルールではクエリモード固有のワイルドカード文字を使用しないでください)。

ACE/Jet SQL 構文には、 ALIKE キーワード。ANSI-92 クエリ モード文字 (% そして _) インターフェイスのクエリ モードに関係なく、ただし、次のようなわずかな欠点があります。 ALIKE キーワードは SQL-92 互換ではありません (ただし、 ALIKE 可搬性が高いままです)。しかし、主な欠点は、私が理解していることです。 ALIKE キーワードは正式にはサポートされていません (ただし、近いうちにキーワードが消えたり、動作が変更されたりすることは想像できません)。

他のヒント

あなたはDAOを使用している場合は、

、(単一のシンボルプレースホルダと疑問符)アスタリスクを使用しています。あなたはADOを使用している場合は、パーセント記号(とアンダースコア)を使用します。

あなたはこれが役立つことがあります:

http://msdn.microsoft.com/ EN-US /ライブラリ/ aa140104(office.10).aspxの

クエリのデザイングリッドで、あなたが使用してDAOと*、ADOやASPと、あなたは%を使用する

ODBC経由でジェットにアクセスするには、使用すべきか、ワイルドカード私にははっきりしません。私は自然のジェットSQLのものを想定すると思います(* /?)、私はODBC経由でJetデータを使用したことがないので、私が言うことができません。

、あなたは、/ _%を使用します(誰もがアクセスの中から使用すべきではない)ADOながら、DAO(とJetの -

は、Remouが引用記事として言うにアクセスでき、コードでは、それはあなたが使用しているもののデータアクセスインターフェイスに依存します)ネイティブインターフェース層は、Jetのネイティブワイルドカード(* /?)を使用します。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top