0

这是在 Oracle 11g 中,我有一个表:LOG,其中包含许多列,如下所示 2 列:

ticketid
comments

我有另一个表 APP_ACCESS 包含(在其他列中)

user_id
appl_id
env_id
ticketid

APP_ACCESS 的 user_id、appl_id 和 env_id 是 LOG 表中 comments 列的一部分。无论这些部分存在于何处(全部三个),我都需要从 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 示例数据(注意:这是一个单元格,即一列,一行数据):

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。

4

2 回答 2

1

Anoop,对于迟到的回复,我很抱歉 - 我直到几分钟前才看到您更新的帖子。

我不是 100% 确定你完成的查询会是什么样子,但至于LogApp_Access表之间的比较,逻辑是这样的:

 INSTR(L.Comments, 'USERSELECTED="' || U.User_ID || '"') > 0 AND
 INSTR(L.Comments, 'APPLICATIONSELECTED="' || U.Appl_ID || '"') > 0 AND
 INSTR(L.Comments, 'ENVIRONMENTSELECTED="' || U.Env_ID || '"') > 0

根据您的需要,您可以在WHERE子句中或作为JOIN条件的一部分使用它。我希望这足以推动你前进。

于 2013-05-02T13:58:14.267 回答
0

您的查询失败可能是因为 APP_ACCESS 表中的值被空白字符包围,或者因为这些值不是完全大写。如果是这样,以下查询必须解决问题:

select L.ticketid from LOG L join APP_ACCESS U
on INSTR(L.COMMENTS, UPPER(TRIM(U.USER_ID))) > 0 
and INSTR(L.COMMENTS, UPPER(TRIM(U.APPL_ID))) > 0

其他可能性:

  • 缺少一些中间字母;所以,这些值是相似的机器人不太匹配。

  • ticketid列是null

  • ...

于 2013-05-02T14:30:40.650 回答