0

以下简单的 SQL 查询在搜索某些特定对象编号时会生成 ORA-01427 错误。

SELECT OBJ

FROM A.TABLEA

WHERE (OBJ ='XXXXXX');

该查询工作正常,除非您选择一个 OBJ,其中有另一个 OBJ 行具有相应的 A 后缀“XXXXXXA”。即查询 OBJ = 'XXXXXA' 工作正常,但查询 OBJ = 'XXXXXX' 会产生错误,或者当没有相应的 OBJ = 'XXXXXYA' 时查询 OBJ = 'XXXXXY' 工作正常

有没有办法处理/避免选择第一/最后/随机单行的错误?

并且更进一步,而不是在我必须加入另一个表以获取日期的日期范围内搜索我想要搜索的特定对象,错误将显示日期内是否存在具有相应“XXXXXXA”的“XXXXXX”范围。请参阅下面的代码,

SELECT
t1.*,
t2.OBJ,
t2.DATE

FROM
A.TABLEA t1
LEFT OUTER JOIN
A.TABLEB t2

ON (t1.OBJ = t2.OBJ)

WHERE
(t2.DATE BETWEEN TO_DATE ('2019/04/01', 'yyyy/mm/dd')
AND TO_DATE ('2019/04/30', 'yyyy/mm/dd');

有没有办法处理/避免此代码中的错误以强制它选择 1 行?

提前致谢。

4

1 回答 1

0

我能够通过选择具有基础数据的正确数据表(而不是我最初选择的 sql 生成表)并在对象编号的前 12 个字符上执行连接来解决这种情况,(SUBSTR(t1.OBJ ,1,12) = SUBSTR(t2.OBJ,1,12)

其中 13 个字符有额​​外的 A 后缀。

谢谢你的帮助。

于 2019-10-01T13:49:56.583 回答