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

时间:2012-10-12 16:23:42

标签: sql configuration odbc informix

以下是我们尝试在Windows系统上通过IBM Informix ODBC Driver在SQLRunner中运行的查询。数据库本身托管在其他地方。

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

查询因“ODBC错误”

而失败

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

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

安装程序:IBM Informix驱动程序版本:3.7在Windows 2003上。

1 个答案:

答案 0 :(得分: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

请注意,名称'Entity'和'Symbol'按您的要求大写。当双引号被单引号替换时,查询失败

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编写的,但这应该是无关紧要的。)