sql - oracle通过添加regexp_like将字符串连接到数字不起作用
问题描述
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”的原因。
解决方案
推荐阅读
- spring - 在 Kafka Streams 中创建全局状态存储(春季)
- xcode - 如何在我的项目中使用静态库的协议?
- vue.js - __webpack_public_path__ 在 vuejs
- python - 如何从 zip 中提取 csv 文件并在 python 中将其保存到磁盘?
- json - JsonMappingException:不是地图,不是数组或不是枚举
- excel - 从启用宏的工作簿复制数据
- github - Hygieia Github Collector 没有获取旧的提交
- here-api - HERE 地图显示和地点 API 之间的结果不一致
- c# - 如何在 IIS windows 身份验证 C# 上添加提供程序
- wordpress - 如果任何访问者查看或访问特定页面 - WordPress,如何强制重定向到登录页面?