以下是我们尝试在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上。
答案 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编写的,但这应该是无关紧要的。)