我有一个目录元数据。其中一些列是用户 ID、内容 ID、角色。角色列是';' 分隔值。例如,
在上表中,结果列指示该行是否应出现在查询中。
管理员角色:管理员、实施者、设置最终用户角色:最终用户 1、最终用户 2、最终用户 3 等。(这些是假名,实际名称不同,这里不能透露)。
为了进一步扩展,标准是,查询应该产生至少具有一个非管理员最终用户角色的行。有五个管理员类型的角色和大量的非管理员最终用户角色。行可以有尽可能多的角色。
以下是我正在考虑的方法: 1. 创建一个包含所有角色的临时表,并在 where 条件下查询角色的表,并使用 INSTR 找出最终用户角色。我不想这样做,因为我试图在我的查询中避免使用 pl/sql。2.正则表达式
我一直在尝试使用正则表达式,但没有得到任何结果。
注意:请不要建议更改数据布局,因为我无法控制它!
更新:好的,这是我正在考虑的另一种方法。- 从列字符串中删除所有与管理员相关的角色。- 检查列表的长度。选择非零长度。我猜这将需要 5 个替换函数,一个用于每个管理员类型角色,一个用于计算长度(本质上是计算分号数 +1)。我正在尝试这个。如果可行,我将更新我的答案。否则邀请更多建议!