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

问题描述 投票:0回答:1

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

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

当我添加 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 的选择错误。

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

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

我无法想象 DB2 不处理带有 where 子句的简单内连接...

有人可以帮我吗?

谢谢。

托马斯。

带有 where 子句的内连接 DB2 SQL 查询。

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

db2 where-clause inner-join ibm-midrange
1个回答
0
投票

简短的回答,是的,

WHERE
JOIN
一起使用时效果很好。

长答案是您的文件中存在一些错误数据。可能是带有字符数据的数字字段。

您的作业日志应该有一个

CPD4019
,其中包含更多信息,包括不良数据的相对记录编号。

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

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

SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE('MEDCPOF', 'SPTML0'));
© www.soinside.com 2019 - 2024. All rights reserved.