【发布时间】:2009-09-11 08:04:49
【问题描述】:
我有一个 MS Access 数据库(Access 2002,作为记录)。它有一个名称包含问号的列,例如表“Users”,列“uid”和“isAdmin?”。我需要通过 ODBC 连接到该数据库,并按照以下方式查询该列:
select [uid], [isAdmin?] from Users order by [isAdmin?];
如何转义列名中的问号,使 MS Access ODBC 驱动程序不认为它是查询参数?这个查询不使用任何参数,所以我完全禁用它们也没关系。
一些限制:
- 我无法轻易更改列名。
- 我不能轻易使用 ODBC 以外的东西进行连接,但如果我无法让 ODBC 正常工作,这可能是我的后备计划。
- 我不能只说
select * from Users——它仍然会卡住 order by(这在实际查询中很复杂,因此确实需要在 SQL 中完成)。
我尝试过但不起作用的方法:
-
select [uid], '[isAdmin?]' from Users;-- 这使得第二列成为字符串“[isAdmin?]” select [uid], ['isAdmin?'] from Users;select [uid], [isAdmin\?] from Users;-
select [uid], [isAdmin\?] {escape '\'} from Users;-- 任何其他转义字符也不起作用。 select [uid], { [isAdmin?] } from Users;
编辑:我应该澄清一下,除了通过 ODBC(或 ADO 或 DAO 或其他方式)之外,我根本无法轻易更改数据库,但这会有点棘手,而且那时我可以通过这些运行查询)。
【问题讨论】:
-
列名中的问号!在 MS Access 团队中授权它的人应该受到惩罚,并在接下来的 10 年里只吃 MacDo's!