Microsoft Access データベース エンジン SQL は、一般に ANSI -89 レベル 1 に準拠しています。 ただし、一部の ANSI SQL 機能は Microsoft Access SQL では実装されていません。 また、Microsoft Access SQL には、予約語と ANSI SQL でサポートされていない機能が含まれています。
主な違い
-
Microsoft Access SQL と ANSI SQL はそれぞれ、異なる予約語とデータ型を持っています。 Microsoft OLE DB プロバイダーを使用して、追加の予約語があります。
-
Between..には異なるルールが適用されます 。次 の構文を持つ と コンストラクト。
expr1 [NOT] value1と value2 の間
Microsoft Access SQL では、 value1 は value2 を超えることができます。ANSI SQL では、 value1 は value2 以下である必要があります 。
-
Microsoft Access SQL では、 LIKE 演算子で 使用する ANSI SQL ワイルドカード文字と Microsoft Access 固有の ワイルドカード文字 の両方がサポートされています。 ANSI と Microsoft Access のワイルドカード文字の使用は、相互に排他的です。 1 つのセットまたはもう 1 つのセットを使用する必要があり、それらを混在させることはできません。 ANSI SQL ワイルドカードは、Microsoft Access データベース エンジンと Microsoft Access OLE DB プロバイダーを使用している場合にのみ使用できます。 Access または DAO を介して ANSI SQL ワイルドカードを使用しようとすると、リテラルとして解釈されます。
一致する文字
Microsoft Access SQL
ANSI SQL
任意の 1 文字
?
_ (アンダースコア)
0 文字以上の文字列
*
%
-
一般に、Microsoft Access SQL の制限は低くなります。 たとえば、式のグループ化と順序付けを許可します。
-
Microsoft Access SQL では、より強力な式がサポートされています。
Microsoft Access SQL の機能強化
Microsoft Access SQL には、次の強化された機能が用意されています。
クロス集計クエリのサポートを提供する TRANSFORM ステートメント。
-
StDev や VarP などのその他の SQL 集計関数。
パラメーター クエリを定義するための PARAMETERS 宣言。
Microsoft Access SQL でサポートされていない ANSI SQL 機能
Microsoft Access SQL では、次の ANSI SQL 機能はサポートされていません。
-
DISTINCT 集計関数参照。 たとえば、Microsoft Access SQL では SUM(DISTINCT 列名) は許可されません。
-
クエリによって返される行数を制限するために使用される LIMIT TO nn ROWS 句。 クエリのスコープを制限するには、 WHERE 句 のみを使用できます。