Go back to the English version of the documentationData Virtualization中 "Db2远程数据源的查询结果不正确
Data Virtualization中Db2远程数据源的查询结果不正确
Last updated: 2024年11月26日
如果运行将字符串数据类型与 Db2® 远程数据库进行比较的查询 (这些数据库使用不在 VARCHAR2 兼容性方式下的 Db2 连接类型) ,那么这些查询可能会返回不正确的结果。
症状
运行一些查询以将字符串数据类型 (CHAR 或 VARCHAR) 与未处于 VARCHAR2 兼容性方式的 Db2 远程数据库进行比较,并使用 Db2 连接类型。 您会获得与本地数据库中的结果不同的结果,因为查询会下推并遵循远程 Db2 比较规则。
例如
select col_char from testable1 union select col_varchar from testable2;
select col_char from testable1 except select col_varchar from testable2;
select col_char from testable1 intersect select col_varchar from testable2;
您可以通过运行 db2 get db
cfg
命令来检查远程 Db2 数据库的配置。 在以下示例中,数据库未处于 VARCHAR2 兼容性方式。
$ db2 get db cfg for testdb |grep "Varchar2 compatibility"
Varchar2 compatibility = OFF
解决问题
要解决此问题,请修改整理顺序服务器选项。
- 运行以下语句以标识数据源的内部连接标识 (
CID
)。select * from DVSYS.LISTRDBC;
此查询将列出集群中的所有连接。 在输出中查找要更改的一个或多个连接的行。
- 运行以下命令以针对要更改的每个连接将此连接的 COLLATING_SEQUENCE 参数修改为
'I'
。ALTER SERVER QPLEX OPTIONS (add <CID>@collating_sequence 'I');
例如ALTER SERVER QPLEX OPTIONS (add DB210000@collating_sequence 'I');