我在中获得了以下结果
ItemNumber Description Price
0xf3f5f4f2f4f8404040404040404040 0xc8c1d9d5c5e2e260e2d7d940c3e3d9d360e2c1c360d7d3c360d5c5e3c140 4841.000当我在RazorSQL中运行相同的查询时,会得到以下结果:
ItemNumber Description Price
354248 HARNESS-SPR CTRL-SAC-PLC-NETA 4841.000如何使提供与RazorSQL相同的结果?
发布于 2019-08-07 13:31:15
问题不在于数据在EBCDIC中.
真正的问题是字段被标记为CCSID 65535 (二进制),而不是CCSID 37。
CCSID 65535告诉系统不要转换数据。
显然,RazorSQL被配置为自动转换65535数据。我没有安装,但是用于连接到IBM的IBM的“”组件在JDBC配置中有如下内容:

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

“正确”的答案是正确地使用实际的CCSID标记数据。
发布于 2019-08-06 17:12:50
我发现我需要对Data中的非十进制字段使用强制转换,因为表是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更新:使用查尔斯的答案,我添加了“转换binary=true”到我的连接字符串,不再需要在我的查询上使用强制转换!
https://stackoverflow.com/questions/57380914
复制相似问题