#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 показал вам путь!