我有一个MS Access数据库(Access 2002,用于记录)。它有一个名称包含问号的列,例如,表“用户”列“uid”和“isAdmin?”。我需要通过ODBC连接该数据库,并查询此列,大意如下:如何通过ODBC查询名称有问号的MS Access列?
select [uid], [isAdmin?] from Users order by [isAdmin?];
如何逃避列名的问号,这样的MS Access ODBC驱动程序不认为这是一个查询参数?这个查询不使用任何参数,所以如果我完全禁用它们就没关系。
一些限制:
- 我不能轻易改变的列名。
- 我不能轻易使用ODBC以外的其他方式进行连接,但如果我无法获得ODBC的行为,这可能是我的备用计划。
- 我不能说
select * from Users
- 它仍然会按顺序呛(这在实际查询中很复杂,所以真的需要在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提供服务! – 2009-09-11 10:35:39