gpt4 book ai didi

java - 执行 JDBC as400 组查询给出错误 : A character, token ,或子句无效或丢失

转载 作者:行者123 更新时间:2023-12-01 13:57:54 25 4
gpt4 key购买 nike

我尝试在 java 中对 AS400 执行查询,但收到以下错误。我相信这与分组有关,并为聚合列分配了别名:

SUM( ILHRS ) AS \"SumIlhrs\"

我可能没有正确转义引号吗?我尝试了以下方法但没有成功

SUM( ILHRS ) AS \"SumIlhrs\", ..,
SUM( ILHRS ) AS \'SumIlhrs\', ...
SUM( ILHRS ), ...

查询已经过测试并且可以正常工作。

String query = "SELECT ILER,PREN,SUM( ILHRS ) AS \"SumIlhrs\" FROM HRDBFA.PYPIL PYPIL, HRDBFA.PRPMS PRPMS WHERE PYPIL.ILEN = PRPMS.PREN AND ( ( ILFYR = 2013 "  +
" AND ILFMON = 9) AND PRGP IN( 'U55', '066', '088' )) GROUP BY ILER,PREN";

错误消息:

SQLException:字符、标记或子句无效或丢失。

感谢您的帮助。

最佳答案

我认为您不需要转义双引号。事实上,正如吉姆·加里森(Jim Garrison)所建议的那样,您根本不需要在分配的名称周围使用双引号。尝试一下

"SELECT ILER,PREN,SUM( ILHRS ) AS SumIlhrs FROM...

编辑

IBM i 上的 DB2 有两种名称样式:系统名称和 SQL 名称。系统命名为SELECT ILER,PREN,SUM( ILHRS ) AS SumIlhrs FROM HRDBFA/PYPIL PYPIL, HRDBFA/PRPMS PRPMS WHERE PYPIL.ILEN = PRPMS.PREN AND ( ( ILFYR = 2013 AND ILFMON = 9) AND PRGP IN( 'U55', '066', '088' )) GROUP BY ILER,PREN令我惊讶的是 JDBC 驱动程序是为系统命名设置的,但这是可能的。

另一种想法:您只在一个地方使用相关名称。要么完全删除相关名称,要么使用适当的相关名称限定每列。 SELECT ILER,PREN,SUM( ILHRS ) AS SumIlhrs FROM HRDBFA/PYPIL, HRDBFA/PRPMS WHERE ILEN = PREN AND ( ( ILFYR = 2013 AND ILFMON = 9) AND PRGP IN( 'U55', '066', '088' )) GROUP BY ILER,PREN

关于java - 执行 JDBC as400 组查询给出错误 : A character, token ,或子句无效或丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19526739/

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