【问题标题】:How to use DELIMIDENT with IBM Informix ODBC Driver on Windows如何在 Windows 上将 DELIMIDENT 与 IBM Informix ODBC 驱动程序一起使用
【发布时间】:2023-03-31 16:55:01
【问题描述】:

这是我们尝试在 SQLRunner 内部通过 Windows 系统上的 IBM Informix ODBC 驱动程序运行的查询。数据库本身托管在其他地方。

SELECT keycolumnA AS 'Entity', datacol1, datacol2 WHERE keycolumnA IN ('ABC', 'DE f')

查询失败并出现“ODBC 错误”

但是,如果我们从 Entity 中删除引号,则查询有效,但列名以小写形式返回。重要的是第一列返回为 Entity 并带有大写 E.

我们已尝试将连接字符串设置为“DSN=myDSN;DELIMIDENT=y;”没有成功。

设置:IBM Informix 驱动程序版本:Windows 2003 上的 3.7。

【问题讨论】:

    标签: sql configuration odbc informix


    【解决方案1】:

    要成为分隔标识符,名称必须用双引号括起来,而不是单引号。因此,在显示连接字符串的情况下,编写如下所示的查询“应该”工作(著名的遗言):

    SELECT keycolumnA AS "Entity", datacol1, datacol2
      FROM RandomlyNamedTable   -- NB: Not present in original query!
     WHERE keycolumnA IN ('ABC', 'DE f');
    

    在包含名为 Elements 的表(存储有关元素表的数据)的数据库上进行测试:

     SELECT Atomic_Number AS "Entity", Name AS Name, Symbol AS "Symbol"
      FROM Elements   -- NB: Not present in original query!
     WHERE Symbol IN ('Fe', 'He');
    
    Entity  | name      | Symbol
    INTEGER | CHAR(20)  | CHAR(3)
    26      | Iron      | Fe
    2       | Helium    | He
    

    请注意,名称“实体”和“符号”按您的需要大写。双引号换成单引号后查询失败

    SELECT Atomic_Number AS 'Entity', Name AS Name, Symbol AS 'Symbol'
      FROM Elements   -- NB: Not present in original query!
     WHERE Symbol IN ('Fe', 'He');
    SQL -201: A syntax error has occurred.
    

    这是设置了 DELIMIDENT...没有设置 DELIMIDENT,“显示标签”周围的单引号和双引号都因语法错误而失败。

    在 Mac OS X 10.7.5 上针对 IBM Informix Dynamic Server 11.70.FC2 进行测试。 (程序是使用 ESQL/C 编写的,但这应该无关紧要。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多