Вопрос по sql – Access 2010 SQL Query найти частичное совпадение только в строке полного слова

4

Надеюсь, это просто, я просто не могу найти, как получить желаемый результат, возможно, я использую неправильное ключевое слово в SQL?

Я ищу таблицу Employee, которая содержит поле полного имени, это поле может быть & quot; Sam & quot; или "Мистер Эванс" или «мистер Сэм Эванс»;

Я пытаюсь найти частичные совпадения с другой таблицей имен, которая содержит поле имени - обычно это короткое имя, например & quot; Sam & quot; или "Эванс" но может быть «Сэм Эванс»

Я пробовал как с и без * следующим образом

SELECT tblEmployee.FullName, tblNames.Name
FROM tblEmployee, tblNames
WHERE tblEmployee.FullName Like "*" & tblNames.Name & "*"

а также результаты, которые я хочу получить, этот запрос может вернуть полное имя сотрудника & quot; Mr. Samson & Quot; что я не хочу. Я хочу видеть только результаты, содержащие полное слово "Сэм" не FullNames с Сэмом в части слова в строке. Итак, я хочу увидеть мистера Сэма Эванса, мистера Сэма Смита и Салли Эванс и т. Д.

Я надеюсь это имеет смысл. Большое спасибо за вашу помощь

Edit - solution

Я решил это - просто опубликовать на случай, если это может помочь любому с подобной проблемой.

WHERE " " & tblEmployee.FullName & " " Like "* " & tblNames.Name & " *"

поэтому, добавляя пробел в начале и конце полного имени сотрудника, я перехватываю все правильные записи. Я не понял, что ты мог бы разложить поле, как это, но коллега предупредил меня!

Ваш Ответ

2   ответа
1

Я использовал это решение из отредактированного поста в Access 2007, и он работал отлично!

WHERE " " & tblEmployee.FullName & " " Like "* " & tblNames.Name & " *"

Теперь мой вопрос: что, черт возьми, делает код SQL и почему он работает? Может кто-нибудь сломать это?

EDITED:

ОК, моя путаница возникла из-за различного использования символов в Access SQL по сравнению с более стандартным SQL. & Амп; сцепляется в Access, а + - в стандартном SQL. И * - это подстановочный знак для любого количества символов в Access, тогда как в SQL это%.

3

Подстановочные знаки в SQL и доступ являются% условное обозначение;

так

"SELECT tblEmployee.FullName, tblNames.Name FROM tblEmployee, tblNames
WHERE tblEmployee.FullName Like '%" & tblNames.Name & "%'"

Будет соответствовать любому экземпляру строкиtblNames.Name

Вы можете использовать% в начале или конце, чтобы получить совпадение только начала строки / конца строки соответственно.

edit

Извиняюсь, выcan использование* а также? в доступе, как вы ожидаете, однако отправляете ли вы запрос в виде строки в некоторый код VBA? Или пытаетесь запустить его напрямую? Как непосредственно в запросе, он не сможет проанализироватьtblNames.Name добавьте строку в запрос, и вам нужно будет передать ее из формы или другой части кода.

Edit based on comment

Чтобы выбрать конкретное слово, требуется лишь немного обойти:

SELECT * FROM table WHERE field LIKE '* myWord *' OR field LIKE '* myWord.*'

При желании вы можете отменить отправку в будущем "LIKE" & apos; MyWord * & apos; и слово с запятыми, полной остановкой, восклицательным знаком и т. д.

Вы могли бы сделать оператор IN и иметь все варианты в справочной таблице, чтобы упростить поддержку в качестве другого варианта.

Error: User Rate Limit Exceeded RockyRoad
Error: User Rate Limit Exceeded RockyRoad
Error: User Rate Limit Exceeded RockyRoad
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded RockyRoad

Похожие вопросы