【发布时间】:2018-10-20 01:40:39
【问题描述】:
我的 oracle 数据库中有两个表 A、B,我想根据唯一字段(用户 ID)比较两个表的数据,但 B 表包含用户 ID 作为 Puserid(所有 ID 都附加 P)
上述情况下如何使用where条件让两张表取回数据?
【问题讨论】:
我的 oracle 数据库中有两个表 A、B,我想根据唯一字段(用户 ID)比较两个表的数据,但 B 表包含用户 ID 作为 Puserid(所有 ID 都附加 P)
上述情况下如何使用where条件让两张表取回数据?
【问题讨论】:
从技术上讲,“P”是前置,而不是附加。
你可以使用||:
from a join
b
on b.userId = 'P' || a.userId
这可能会对性能产生重大影响。如果可以,您应该在b 中定义一个新列(可能是一个虚拟列)。以上可以使用b(userid)上的索引。
你也可以这样表述:
from a join
b
on a.userId = substr(b.userId, 2)
这可以利用a(userid)上的索引。
【讨论】:
您可以使用ltrim:
select a.*, b.*
from tableA a join tableB b on ( a.userid = ltrim(b.userid,'P') );
【讨论】: