Простой подобный запрос не работает в MS-Access

#database #ms-access #sql-like

#База данных #ms-access #sql-подобный

Вопрос:

У меня есть простая Ms-Access база данных с одной таблицей с именем Student , и в ней есть два столбца ID и Name .

Когда я открываю базу данных в Access и ввожу запрос

 select * from Student where Name like 'J%'
  

в представлении SQL он выдает пустой результирующий набор.

Но в таблице есть Name called John .

Я пробовал с другими базами данных и таблицами также с like-queries , но ни одна из них не работает.

Кто-нибудь, пожалуйста, может сказать, есть ли какая-либо особая причина для этого???

Спасибо

Редактировать:

Тот же запрос работает с кодом c sharp

Комментарии:

1. работает ли select * из Student?

2. Да, это работает даже в коде c sharp…

3. Он работает в C #, потому что вы, вероятно, используете OLEDB для его выполнения, что означает, что Jet / ACE работает в режиме ANSI 92 SQL, где% является оператором подстановки. В Access по умолчанию используется устаревший (и проприетарный) режим SQL ASNI 89, в котором в качестве подстановочного знака используется *. Вы можете использовать подстановочный знак % в режиме ANSI 89, если используете проприетарный оператор ALIKE.

4. @David-W-Fenton: Огромное спасибо за комментарий!!!

Ответ №1:

Что вам нужно, так это

 select * from Student where Name like 'J*'
  

или, возможно (поскольку у меня нет удобного доступа для проверки, возможно, сработает либо то, либо другое)

 select * from Student where Name like "J*"
  

* является символом подстановки для MSAccess

Комментарии:

1. Также — если у вас есть контроль над структурой базы данных (schema), измените имя Name . Это зарезервированное слово, и хотя Access обычно позволяет вам обходиться без этого, это не всегда так — и другие СУБД просто не будут. Программист по обслуживанию, который придет после вас — которым можете быть даже вы сами — поблагодарит вас.

Ответ №2:

По моему опыту в прошлом… да, синтаксис access имеет некоторые незначительные различия, которые создают проблемы даже с простыми вещами.

Я не помню как, но проверьте способ заставить access отображать sql из некоторых результатов, которые вы получили графическим способом, где-то должна быть кнопка show sql.

После этого внимательно изучите синтаксис sql, затем протестируйте свой sql в редакторе access. Итак, основная идея в том, чтобы access показал вам путь!