代码之家  ›  专栏  ›  技术社区  ›  C Pirate

如何通过ODBC查询名称带有问号的MS Access列?

  •  2
  • C Pirate  · 技术社区  · 15 年前

    select [uid], [isAdmin?] from Users order by [isAdmin?];

    如何避开列名中的问号,使MS Access ODBC驱动程序不认为它是查询参数?这个查询不使用任何参数,所以如果我完全禁用它们就可以了。

    一些限制:

    • 我不能轻易地更改列名。
    • 我不能轻易地使用ODBC以外的东西来连接,尽管如果我不能让ODBC正常工作,这可能是我的备用方案。
    • 我不能这么说 select * from Users --它仍然会阻塞ORDERBY(这在实际查询中很复杂,因此确实需要在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或其他方式,我根本无法轻松更改数据库,但这会有点棘手,此时我可以通过这些方式运行查询)。

    5 回复  |  直到 15 年前
        1
  •  3
  •   David-W-Fenton    15 年前

    这似乎是一个迂回的解决方案,但听起来你没有得到任何合理的帮助来解决这个问题。

    您是否具有MDB结构的写访问权限?你有独立访问的副本吗?

    另一种选择是,假设您有OLEDB访问MDB的权限,因为将具有适当别名的视图添加到MDB中是一种一次性操作,因此可以使用OLEDB执行此操作。

        2
  •  2
  •   user80055    15 年前

    我会用 pass through queries 并重命名查询中的字段。创建您的通行证,如

     select [uid], [isAdmin?] AS ISADMIN from Users order by [isAdmin?]
    


    select Uid, ISADMIN from qpstUsers
    
        3
  •  2
  •   Ed Harper    15 年前

    另一个选项是创建 Users 表并重命名视图中有问题的列。

        4
  •  1
  •   christophe spielmann    8 年前

    我也面临着同样的问题。(使用SQLdeveloper的MS Access驱动程序)。

    ACCESS SQL与中的“”不同 不像“*val*”

        5
  •  0
  •   Tim Post Samir J M Araujo    13 年前

    试试这个“IsAdmin?”

    我的where子句后来变成where“Lead#”='123'


    我收回那句话。。。

    这就是救我的原因。注意子句周围的括号和参数123周围缺少单引号。希望这有帮助。