AS400 DB2 不支持 JOIN with = 'xxxxxxxxx'?

AS400 DB2 Does not support JOIN with = 'xxxxxxxxx'?

提问人:Thomas Vessiere 提问时间:10/16/2023 最后编辑:philipxyThomas Vessiere 更新时间:10/17/2023 访问量:1063

问:

我正在尝试进行内部连接并在其上添加 where 子句。

where 子句是 API 调用给出的数字,用于检索一个人编写的 lettres。

当我添加一个 MATCHING where 子句时,它不起作用。

这是SQL查询:

SELECT IDLETTRE, IDPATIENT, NUMINAMI, DATELETTRE, FILEDEST,
PBNAME                                                     
FROM                                                       
MEDLIB.OVLETTRES  INNER JOIN MEDCPOF.SPTML0 ON             
IDPATIENT = SPTML0.DZL6                                    
where NUMINAMI = '16721216370'

给我错误:涉及字段 *N 的选择错误。

当我添加一个 NON 匹配 where 子句时,它会按预期给出我和 emplty 行的响应......

SELECT IDLETTRE, IDPATIENT, NUMINAMI, DATELETTRE, FILEDEST,
PBNAME                                                     
FROM                                                       
MEDLIB.OVLETTRES  INNER JOIN MEDCPOF.SPTML0 ON             
IDPATIENT = SPTML0.DZL6                                    
where NUMINAMI = '123'

Empty rows as expected

我期望具有 where 条件而不是错误的行。.

db2 where-clause 内部连接 ibm-midrange

评论

0赞 Thomas Vessiere 10/16/2023
我尝试使用别名等,但不起作用。当 where 子句找到行时,它的 literraly....当我删除 where 子句时,查询正在工作
0赞 philipxy 10/17/2023
您的 1 个具体研究的非重复问题是什么?请询问 1 个错误的查询/函数,并提供强制性的最小可重现示例,包括为什么您认为它应该返回其他内容,或者不确定在第一个子表达式中您没有得到您期望或卡住的地方,通过参考权威文档进行证明,或者询问您的总体目标,给出您可以用理由和最小可现示例来做的工作部分--那么被误解的代码就不属于了。但是,请首先询问意外行为,因为误解会妨碍您的目标。如何咨询帮助中心 基本问题是常见问题解答。
0赞 philipxy 10/17/2023
请:通过编辑而不是评论来澄清。删除并标记过时的评论。使用标准拼写和标点符号。根据语法合理地缩进代码。避免在帖子中发表社交和元评论。为什么我不应该上传代码/数据/错误的图像?调试问题需要一个最小的可重现示例Stack Overflow 用户需要付出多少研究努力? 如何咨询帮助中心
0赞 philipxy 10/17/2023
“where 子句是一个数字”是一个字符串。是?'16721216370'NUMINAMI

答:

1赞 Charles 10/16/2023 #1

简短的回答,是的,与 一起使用时效果很好。WHEREJOIN

长答案是你的文件中有一些坏数据。可能是包含字符数据的数值字段。

您的作业日志应包含更多信息,包括包含错误数据的相对记录编号。CPD4019

假设你使用的是受支持的操作系统版本,并且是最新的修复程序,则可以使用VALIDATE_DATA存储过程来检查无效数据。

SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE('MEDLIB', 'OVLETTRES'));

SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE('MEDCPOF', 'SPTML0'));