根据其分号分隔列中的值选择行:PL / SQL

时间:2017-08-15 14:58:38

标签: sql oracle

我目前正在尝试选择该行以分号分隔的ID列中存在特定ID的所有行。

表:

=====================
 TOOL_ID | TOOL_USERS
---------------------
    1        1;2;3
    2        1;3
    3        1
=====================

我想选择某个用户有权访问的所有工具,例如,用户ID为3的所需结果:

TOOL_ID | TOOL_USERS
---------------------
    1        1;2;3
    2        1;3

我知道这个设计没有规范化,但我没有能力更改/修改数据库。我总是可以只查询所有行,然后循环结果删除任何不包含用户ID的结果,但我宁愿这样做是一个很好的,干净的查询。

这可能吗? 感谢。

1 个答案:

答案 0 :(得分:4)

您可以将LIKE关键字与通配符一起使用。我包括前导和结尾分号所以13和东西不匹配3。

SELECT TOOL_ID, TOOL_USERS FROM YourTable WHERE ';' || TOOL_USERS || ';' LIKE '%;3;%'

有人告诉我,如果我没有把这个很好地翻译成PLSQL。