【发布时间】:2019-11-02 22:12:39
【问题描述】:
oracle 通过添加 regexp_like 将字符串连接到数字不起作用。例如,
Foo Bar
-------------- ------------
id varchar2(20) id number(20,0)
Foo id 可以是数字或任何字符串(不是数字),例如 123、hello、world、555 等。
select foo.id,bar.id from Foo foo
left join Bar bar on (regexp_like(foo.id, '^[0-9]+$') and foo.id=bar.id)
错误:
ERROR at line 1:
ORA-01722: invalid number
foo.id=bar.id 仅在 foo.id 是数字时才被评估,对吧?
以下对 mysql 工作正常
select foo.id,bar.id from Foo foo
left join Bar bar on (foo.id=bar.id)
但它会导致 ORA-01722: invalid number for oracle。这就是连接条件中添加“regexp_like”的原因。
【问题讨论】:
-
嗨@Sunnyday 为什么Oracle数据库标签和这个“以下对mysql工作正常”?谢谢!
-
我知道。我希望mysql版本适用于oracle。