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