gpt4 book ai didi

ibm-midrange - 对名称带有 @ 或 # 字符的表运行 SQL 查询会在不同的 CCSID 上显示问题

转载 作者:行者123 更新时间:2023-12-05 03:01:05 28 4
gpt4 key购买 nike

我在 Db2 i (Db2400) 上有一个遗留数据库,其中表(物理文件)名称及其字段包含一些变体字符,如 @ 和 #。我的应用程序使用简单的 JDBC 访问这些表中的数据。

当我的 IBM i 机器使用默认 CCSID(即 65535 和英语 CCSID)时,这工作正常。

但是 SQL 查询在像 871(冰岛)这样的 CCSID 上失败,它以不同的方式对待 @ 字符。它给出了错误:

[SQL0113] Name T@BNAME not allowed.

我尝试了几种方法来解决问题,例如设置 JDBC 连接 url 属性:

“包 ccsid”为 1208 (UTF-8)。

“package ccsid”- 指定用于 SQL 包和发送到系统的任何语句的字符编码。

另一种方法是为此类表创建别名。但是如果这些字符出现在列名中,那么我们就不能在不重新创建表结构的情况下为这些字符创建别名。

我希望我的 JDBC 查询能够在不同的 CCSID 中正常运行。建议不要在 SQL 对象名称中使用此类字符。但正如我所说,我的数据库是遗留数据库,无法轻易更改/修改。

最佳答案

为列名中有问题字符的表创建 View 而不是别名。您可以为 View 定义中的列指定新名称。

关于ibm-midrange - 对名称带有 @ 或 # 字符的表运行 SQL 查询会在不同的 CCSID 上显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56150016/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com