代码之家  ›  专栏  ›  技术社区  ›  Rob Bowman

带空格的ODBC选择列-不喜欢方括号

  •  0
  • Rob Bowman  · 技术社区  · 6 年前

    我在access97中有一个查询,它从SQL Server 2016中插入到access97表中,如下所示:

    insert into[alarm]
    从“”中的[CommonServices.Alarm]中选择优先级
    [odbc;driver=odbc driver 13 for SQL Server;
    服务器=;可信连接=是;
    数据库=公共服务];
    < /代码> 
    
    

    这个很好用。

    我的问题是,如果我想选择名称中有空格的列,例如“Alarm Gag”,当我用方括号括起来时,我会得到错误“Circular reference caused by alias‘Alarm Gag’in query definition’s select list.

    所以,如果我跑步:

    insert into[alarm]
    从“”中的[CommonServices.Alarm]中选择[Alarm Gag]。
    [odbc;driver=odbc driver 13 for SQL Server;
    服务器=;可信连接=是;
    数据库=公共服务];
    < /代码> 
    
    

    然后我得到:

    如果我尝试[优先]的话,我也有同样的问题。

    我有什么办法解决这个问题吗?

    这个很好用。

    我的问题是,如果我想选择一个名称中有空格的列,例如“Alarm Gag”,当我用方括号括起来时,会在查询定义的选择列表中得到别名“Alarm Gag”导致的“循环引用”错误。

    所以,如果我跑:

    INSERT INTO [alarm]
    SELECT [alarm gag] FROM [commonservices.alarm] IN '' 
    [ODBC;DRIVER=ODBC Driver 13 for SQL Server;
     SERVER=.;Trusted_Connection=Yes;
     DATABASE=CommonServices]; 
    

    然后我得到:

    enter image description here

    我也有同样的问题,如果我尝试[优先权]

    我有什么办法解决这个问题吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Erik A    6 年前

    循环引用错误是由与列名相同的列别名引起的。

    可以通过为导致循环引用错误的列指定表名来避免这些错误。

    INSERT INTO [alarm]
    SELECT alarm.[alarm gag] FROM [commonservices.alarm] IN '' 
    [ODBC;DRIVER=ODBC Driver 13 for SQL Server;
     SERVER=.;Trusted_Connection=Yes;
     DATABASE=CommonServices];