我目前正在尝试选择该行以分号分隔的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的结果,但我宁愿这样做是一个很好的,干净的查询。
这可能吗? 感谢。
答案 0 :(得分:4)
您可以将LIKE关键字与通配符一起使用。我包括前导和结尾分号所以13和东西不匹配3。
SELECT TOOL_ID, TOOL_USERS FROM YourTable WHERE ';' || TOOL_USERS || ';' LIKE '%;3;%'
有人告诉我,如果我没有把这个很好地翻译成PLSQL。