java - 参数文件上的 AS400 SQL 脚本返回

标签 java jdbc ibm-midrange jt400

我正在使用 Java/JT400 驱动程序将应用程序集成到 AS400。当我从参数文件中提取数据时遇到问题 - 检索到的数据似乎已被编码。

SELECT SUBSTR(F00001,1,20) FROM QS36F."FX.PARA" WHERE K00001 LIKE '16FFC%%%%%' FETCH FIRST 5 ROWS ONLY

输出

00001: C6C9D9C540C3D6D4D4C5D9C3C9C1D34040404040,  - 1
00001: C6C9D9C5406040C3D6D4D4C5D9C3C9C1D3406040,  - 2

如何将其转换为可读格式?有没有一个函数可以用来解码这个?

在与 AS400 的终端连接上,通过相同的 SQL 查询可以正确显示信息。

在此之前我没有使用 AS400 的经验,并且确实需要一些帮助。此问题仅与参数文件有关。数据库表工作正常。

最佳答案

您看到的是 EBCDIC 输出而不是 ASCII。这是由于其他答案中提到的 CCSID 未在数据库中指定。理想的解决方案是将 CCSID 分配给数据库中的字段。如果您没有能力这样做并且无法说服相关负责人这样做,那么以下解决方案也应该有效:

SELECT CAST(SUBSTR(F00001,1,20) AS CHAR(20) CCSID(37))
FROM QS36F."FX.PARA"
WHERE K00001 LIKE '16FFC%%%%%'
FETCH FIRST 5 ROWS ONLY

将 CCSID 替换为您需要的任何一个。 CCSID 定义可在此处找到:https://www-01.ibm.com/software/globalization/ccsid/ccsid_registered.html

关于java - 参数文件上的 AS400 SQL 脚本返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988989/

相关文章:

java - 类扩展抽象类实现接口(interface)

java - (Java) ArrayList<obj> 中 add(obj o) 方法的内部工作

java - 使用 Ant 进行 JDBC COPY

python - pyodbc rowcount 返回负数

sql - 直接从Excel中选择AS400查询记录

java - 如何检测 Java Util Logging 是否已配置?

spring - 我可以为数据库实例使用多个 C3P0 数据源吗?

mysql - 加载类 `com.mysql.jdbc.Driver' 。这已被弃用。新的驱动程序类是 `com.mysql.cj.jdbc.Driver'

c# - 无法使用 Entity Framework 开始分布式事务

java - 使用 Spring 框架的 WebSocketClient 时如何修复 NoClassDefFoundError