如何在Windows上使用DELIMIDENT和IBM Informix ODBC驱动程序

问题描述:

以下是我们尝试通过Windows系统上的IBM Informix ODBC驱动程序在SQLRunner内部运行的查询。数据库本身托管在别处。如何在Windows上使用DELIMIDENT和IBM Informix ODBC驱动程序

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

查询失败“ODBC错误”

但是,如果我们从删除引号实体,查询工作,但列名以小写返回。重要的是,将第一列返回为实体并带有大写字母E.

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

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

要定界标识,名称必须用双引号,而不是单引号。因此,所显示的连接字符串,编写查询如下所示,“应当”的工作(鬼才):含试验称为元素(存储有关元素表数据)表的数据库上

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

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编写,但应该不重要。)