【发布时间】:2013-05-01 17:49:01
【问题描述】:
这是在 Oracle 11g 中 我有一个表:LOG,其中包含许多列,如下所示的 2 列:
ticketid
comments
我有另一个表 APP_ACCESS,其中包含(在其他列中)
user_id
appl_id
env_id
ticketid
APP_ACCESS 的 user_id、appl_id 和 env_id 是 LOG 表中 cmets 列的一部分。无论这些部分存在于何处(全部三个),我都需要从 LOG 表中获取 ticketid 并更新 APP_ACCESS。
我尝试的如下(我无法检索票证本身,没有返回任何内容):
select L.ticketid from LOG L join APP_ACCESS U
on INSTR(L.COMMENTS, U.USER_ID) > 0 and INSTR(L.COMMENTS, U.APPL_ID) > 0
编辑#1 cmets列中的样本数据(注意:这是一个单元格,即一列一行的数据):
ATTEMPTED: MANAGERCOMMENTS="TEST",AFTER: MANAGERCOMMENTS="TEST"
ATTEMPTED: JUSTIFICATION="TEST",AFTER: JUSTIFICATION="TEST"
ATTEMPTED: REQUESTORDIVISION="DOF",AFTER: REQUESTORDIVISION="DOF"
ATTEMPTED: USERSELECTED="VEXUSERTEST",AFTER: USERSELECTED="VEXUSERTEST"
ATTEMPTED: REQUESTTYPE="CHANGE ACCESS",AFTER: REQUESTTYPE="CHANGE ACCESS"
ATTEMPTED: REQUESTORREGION="WASHINGTON",AFTER: REQUESTORREGION="WASHINGTON"
ATTEMPTED: ENVIRONMENTSELECTED="DEVELOPMENT",AFTER: ENVIRONMENTSELECTED="DEVELOPMENT"
ATTEMPTED: REQUESTORCOMMENTS="TEST",AFTER: REQUESTORCOMMENTS="TEST"
ATTEMPTED: APPLICATIONSELECTED="TEST_APP",AFTER: APPLICATIONSELECTED="TEST_APP"
ATTEMPTED: REQUESTOR="PRTEST",AFTER: REQUESTOR="PRTEST"
ATTEMPTED: ADDEDACCESSLEVELS="DEFAULT ACCESS",AFTER: ADDEDACCESSLEVELS="DEFAULT ACCESS"
USERSELECTED=" 后面的字符串与APP_ACCESS 表中的USER_ID 相同。 APPLICATIONSELECTED="后的字符串与APP_ACCESS表中的APPL_ID相同。同样ENVIRONMENTSELECTED="后的字符串映射到APP_ACCESS表中的ENV_ID。
【问题讨论】:
-
您能否发布一个示例
Comments值及其匹配的user_id、appl_id和env_id值?INSTR可能不准确 - 例如,如果您正在寻找user_id=10,它将在与user_id=10、user_id=101、user_id=1000等匹配时返回命中。了解comments的值将决定是否可以解决此问题。 -
@EdGibbs 我同意。如果这些值以已知顺序分隔或分组,您将能够更轻松地扫描这些子字符串。
-
我已经用 cmets 数据样本更新了问题