Посмотрите, согласен ли механизм БД с тем, что значения Имени для Майка Смита одинаковы в обеих таблицах.
SELECT
[Name] AS name_field,
Len([Name] AS name_length,
'TABLE1' AS source_table
FROM TABLE1
WHERE
[Name] ALike '%Mike%'
AND [Name] ALike '%Smith%'
UNION ALL
SELECT
[Name] AS name_field,
Len([Name] AS name_length,
'TABLE2' AS source_table
FROM TABLE2
WHERE
[Name] ALike '%Mike%'
AND [Name] ALike '%Smith%'
ORDER BY 1, 3;
В дополнение к возможности конечных пробелов, как упоминалось @JohnFx, ваши значения Имени могутвключайте невидимые символы, которые не являются пробелами.Я сталкивался с такими символами при импорте из источников данных Excel.
Обновление : если вы выполняете запрос с использованием DAO, вы можете изменить предложение WHERE следующим образом:
WHERE
[Name] Like '*Mike*'
AND [Name] Like '*Smith*'
Однако это предложение WHERE может вызвать проблемы при выполнении запроса в ADO, поскольку ADO требует использования подстановочных знаков ANSI (% и _ вместо * и?).Ключевое слово ALike (ANSI Like) указывает механизму БД ожидать подстановочных знаков ANSI, поэтому будет работать одинаково, независимо от того, выполняется ли запрос в DAO или ADO.