如何在 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?