从不同模式查询连接时出错

error when query join from different schema

我想连接来自不同模式的记录,但结果仍然是错误 ORA-00907:缺少右括号。

这是我的查询

select a.column1, a.column2, b.cast(column3 AS NUMBER)
from schema1.tablea a
left join schema2.tableb b
ON a.column1 = b.cast(column2 AS NUMBER)

仅供参考,第 1 列和第 2 列是数字数据类型,第 3 列是 varchar2 数据类型

更新:

我更新了查询但仍然出错。 ORA-01722: 数字无效

select a.column1, a.column2, cast(b.column3 AS NUMBER)
from schema1.tablea a
left join schema2.tableb b
ON a.column1 = cast(b.column2 AS NUMBER)

谢谢

这意味着 B.ACCOUNTNO 包含不能转换为数字的值,例如 123AB

怎么办?不要将数字存储到 VARCHAR2 数据类型列中。

现在怎么办?找到这样的值并修复它们。或者,将 WHERE 子句包含在您的查询中,以避免出现此类值。例如:

SQL> with test (accountno) as
  2    (select '12345' from dual union all   --   valid
  3     select '123AB' from dual union all   -- invalid
  4     select '12AB5' from dual             -- invalid
  5    )
  6  select accountno
  7  from test
  8  where regexp_like(accountno, '^\d+$');

ACCOU
-----
12345

SQL>