如何在 Windows 上将 DELIMIDENT 与 IBM Informix ODBC 驱动程序一起使用

Posted

技术标签:

【中文标题】如何在 Windows 上将 DELIMIDENT 与 IBM Informix ODBC 驱动程序一起使用【英文标题】:How to use DELIMIDENT with IBM Informix ODBC Driver on Windows 【发布时间】:2012-10-12 16:23:42 【问题描述】:

这是我们尝试在 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。

【问题讨论】:

【参考方案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 编写的,但这应该无关紧要。)

【讨论】:

以上是关于如何在 Windows 上将 DELIMIDENT 与 IBM Informix ODBC 驱动程序一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上将现有密钥添加到 openssh?

如何在 Windows 10 上将代理配置到 GitBash 环境中

如何在 Windows 上将 Qt QString 转换为 LPCTSTR

如何在 Windows 上将 NPM 升级到特定版本 6.4.1?

如何在 Windows 10 上将 Xdebug 3 连接到 PhpStorm?

如何在 Windows 上将 OpenCV 库正确链接到 Eclipse?