提问人:Thomas Vessiere 提问时间:10/16/2023 最后编辑:philipxyThomas Vessiere 更新时间:10/17/2023 访问量:1063
AS400 DB2 不支持 JOIN with = 'xxxxxxxxx'?
AS400 DB2 Does not support JOIN with = 'xxxxxxxxx'?
问:
我正在尝试进行内部连接并在其上添加 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'
我期望具有 where 条件而不是错误的行。.
答:
1赞
Charles
10/16/2023
#1
简短的回答,是的,与 一起使用时效果很好。WHERE
JOIN
长答案是你的文件中有一些坏数据。可能是包含字符数据的数值字段。
您的作业日志应包含更多信息,包括包含错误数据的相对记录编号。CPD4019
假设你使用的是受支持的操作系统版本,并且是最新的修复程序,则可以使用VALIDATE_DATA存储过程来检查无效数据。
SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE('MEDLIB', 'OVLETTRES'));
SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE('MEDCPOF', 'SPTML0'));
评论
'16721216370'
NUMINAMI