簡體   English   中英

連接到DB2服務器時,IBM Data Studio與RazorSQL的結果不同

[英]Different Results in IBM Data Studio vs RazorSQL When connecting to DB2 Server

我在IBM Data Studio中得到以下結果

 ItemNumber                       Description                                                    Price
 0xf3f5f4f2f4f8404040404040404040 0xc8c1d9d5c5e2e260e2d7d940c3e3d9d360e2c1c360d7d3c360d5c5e3c140 4841.000

當我在RazorSQL中運行相同的查詢時,得到以下結果:

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

如何使IBM Data Studio提供與RazorSQL相同的結果?

問題不在於數據在EBCDIC中。

真正的問題是這些字段用CCSID 65535(二進制)而不是CCSID 37標記。

CCSID 65535告訴系統不要轉換數據。

RazorSQL顯然配置為自動轉換65535數據。 我沒有安裝IBM數據工作室,但是我用來連接到IBM i的IBM ACS的“運行SQL腳本”組件在JDBC配置中具有以下內容:
在此處輸入圖片說明

此設置顯示了JDBC驅動程序的以下屬性
在此處輸入圖片說明

正確的答案是使用實際的CCSID正確標記您的數據。

我發現我需要對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

更新:使用查爾斯的答案,我在連接字符串中添加了“ translate binary = true”,並且不再需要對查詢使用CAST!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM