我在Java程序中的iseries中嵌入了sql查询,这引发了以下错误-

"[SQL0332] Character conversion between CCSID-id 1156 and 278 is not possible.".


我只用一个库而不是全部都面对这个问题。

工作查询:

select * from SRBKTO where KOACNO=721


不起作用的查询:

select * from SRBKTO where KOACNO= '721' (This works for other libraries)


如果我尝试使用带引号(字符串或整数类型)的条件子句来查询,则会引发错误。

我对iSeries并不了解。我了解到的是,字符" ' "(到目前为止,我只猜为该字符)从CCSID 1156到278的转换问题。

我尝试了jt400native jar的java API com.ibm.as400.access.AS400.setCcsid(1156)将源CCSID设置为连接对象,这没有任何结果。
是否需要更改目标CCSID?任何人都可以提出解决此问题的方法吗?

最佳答案

如果使用DSPFFD显示KOACNO字段描述,则会发现代码页/字符集为1156(波罗的海)。您可以使用CAST为目标字符集转换查询中的字段。

从可用的库中检查什么是正确的CCSID。下面的强制转换示例(假设正确为1146):

select * from SRBKTO where CAST(KOACNO AS CHAR(20) CCSID 1146) = '721'

09-10 23:17