连接到DB2服务器时,IBMDataStudio与RazorSQL的结果不同

连接到DB2服务器时,IBMDataStudio与RazorSQL的结果不同,sql,select,db2,Sql,Select,Db2,我在IBMDataStudio中获得以下结果 ItemNumber Description Price 0xf3f5f4f2f4f8404040404040404040 0xc8c1d9d5c5e2e260e2d7d940c3e3d9d360e2c1c360d7d3c360d5c5e3c140 4841.000 在RazorSQL中运行相同的查询

我在IBMDataStudio中获得以下结果

 ItemNumber                       Description                                                    Price
 0xf3f5f4f2f4f8404040404040404040 0xc8c1d9d5c5e2e260e2d7d940c3e3d9d360e2c1c360d7d3c360d5c5e3c140 4841.000
在RazorSQL中运行相同的查询时,会得到以下结果:

ItemNumber         Description                       Price
354248             HARNESS-SPR CTRL-SAC-PLC-NETA     4841.000

如何使IBM Data Studio提供与RazorSQL相同的结果?

我发现我需要对Data Studio中的非十进制字段使用强制转换,因为该表是EBCDIC。因此,有效的查询是

SELECT CAST(AMFLIB7.ITMRVA.ITNBR as CHAR(16) ccsid 37) AS "ItemNumber", CAST(AMFLIB7.ITMRVA.ITDSC as CHAR(64) ccsid 37) AS "Description", AMFLIB7.ITRBPR.BZANVA As "Price" 
FROM AMFLIB7.ITMRVA
INNER JOIN AMFLIB7.ITRBPR ON AMFLIB7.ITRBPR.ITNBR = AMFLIB7.ITMRVA.ITNBR
WHERE AMFLIB7.ITMRVA.ITNBR = '354248'
ORDER BY AMFLIB7.ITRBPR.BZBLDT DESC
FETCH FIRST 1 ROWS ONLY

更新:使用Charles的答案,我将“translate binary=true”添加到我的连接字符串中,不再需要在我的查询中使用CAST

问题不在于数据在EBCDIC中

真正的问题是,字段标记为CCSID 65535(二进制),而不是CCSID 37

CCSID 65535告诉系统不要转换数据

RazorSQL显然配置为自动转换65535数据。我没有安装IBM data studio,但是我用来连接到IBM的IBM ACS的“运行SQL脚本”组件的JDBC配置中有以下内容:

此设置显示JDBC驱动程序的以下属性


“正确”的答案是用数据的实际CCSID正确地标记数据。

编辑您的问题以提供更多细节,例如SQL(对于两个GUI工具,可能是相同的SQL)、Db2中列ItemNumber和Description的数据类型,以及哪个Db2服务器平台(z/os、i-series、Linux/Unix/Windws)。还要确认(我假设)RazorSQL和DataStudio指向完全相同的数据库和模式。还请记住,要确保应用了最新的DataStudio版本(4.1.3)和APAR-5,因为自v4.1.3发布以来,许多错误都已修复。将“translate binary=true”添加到我的JDBC连接字符串中为我完成了这一任务!!