Microsoft KB Archive/200406

= ACC: Using LIKE with Wildcards May Cause Unexpected Results =

Article ID: 200406

Article Last Modified on 1/23/2007

-

APPLIES TO


 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q200406



Moderate: Requires basic macro, coding, and interoperability skills.



SYMPTOMS
In a Microsoft Access query, if you use the LIKE operator with a wildcard, such as "*" or "?", to search for dates, you may see unexpected results.



CAUSE
The LIKE function is used to compare two strings. It does not inspect the string for any type of date information.



RESOLUTION
Use the comparison operators <, >, <=, =>, <> or the BETWEEN clause when searching for dates. For example, when looking for dates in the month of May 97, use the following syntax:

Orders.OrderDate >= #5/1/1997# AND Orders.OrderDate <= #5/31/1997#



Steps to Reproduce Behavior
 Open the sample database Northwind.mdb. Create a new query in Design view, and close the Show Tables dialog box without adding any tables. On the View menu, click SQL View and type in the following:

SELECT Orders.CustomerID, Count(*) AS NumberOfOrders

FROM Orders

WHERE (((Orders.OrderDate) BETWEEN #5/1/97# AND #5/31/97#))

GROUP BY Orders.CustomerID

 Save the query as qryTest1 and run it. It returns the expected results. Create a second query called qryTest2 with the following SQL:

SELECT Orders.CustomerID, Count(*) AS NumberOfOrders

FROM Orders

WHERE (((Orders.OrderDate) LIKE "5/*/97"))

GROUP BY Orders.CustomerID

NOTE: The only difference from the SQL above is that the WHERE clause uses a wildcard.

</li> Run qryTest2. You see that it also returns the expected results as in qryTest1.</li> Now change the SQL in qryTest2 so that the date uses a 4-digit year as in the following statement:

SELECT Orders.CustomerID, Count(*) AS NumberOfOrders

FROM Orders

WHERE (((Orders.OrderDate) LIKE "5/*/1997"))

GROUP BY Orders.CustomerID

</li> Run the query.

Note that no rows are returned as no matches are found.</li></ol>

<div class="references_section">