Some of the content in this topic may not be applicable to some languages.
The two ANSI SQL query modes, ANSI-89 and ANSI-92, are not compatible. When you create a Microsoft Access database, you need to decide which query mode you are going to use, because mixing queries created in both query modes could produce runtime errors or unexpected results. The range of data types, reserved words, and wildcard characters are different in each query mode.
Example of a query using wildcard characters
A query that uses wildcard characters in a criteria expression can produce different results under each query mode. For example, if you run:
SELECT * FROM Customers WHERE Country Like 'U*'
It returns all customers from a country/region named "U*", not all countries/regions beginning with the letter "U", because the asterisk (*) is not a wildcard character in ANSI-92 SQL.
SELECT * FROM Customers WHERE Country Like 'U%'
It returns all customers from a country/region named "U%", not all countries/regions beginning with the letter "U", because the percent sign (%) is not a wildcard character in ANSI-89 SQL.
Example of a query with a duplicate field and alias name
If a query uses an alias that is the same as a base column name and you create a calculated field using the ambiguous name, the query will produce different results under each query mode. For example, if you run the following query:
SELECT Orders.OrderID AS Freight, Orders.Freight, [Freight]*1.1 AS [New Freight] FROM Orders;
Under ANSI-92 SQL, Access calculates the New Freight value using the Freight field, and therefore increases each Freight by 10%. Under ANSI-89 SQL, Access calculates the New Freight value using the Freight alias, and therefore increases each OrderID by 10%.
How to avoid problems caused by mixing queries under different ANSI SQL query modes in the same database
In general, avoid doing the following to prevent problems caused by mixing queries created under different ANSI SQL query modes:
In Access 2000, you can only programmatically change the ANSI SQL query mode and any queries created under ANSI-92 mode were hidden in the Database window. In Access 2002, you or a user can change ANSI SQL query mode through the user interface and ANSI-92 queries are no longer hidden in the Database window, so you should prevent accidental or intentional changes to the ANSI SQL query mode of your application by protecting your code and preventing the changing of the query mode through the application's user interface.
Using ambiguous aliases and column names. To avoid confusion, ensure that aliases and column names are always unique in an SQL statement.