【发布时间】:2016-08-10 05:22:01
【问题描述】:
我想知道,如果有一个技巧来获得两个字符串比较的布尔/位结果,其中 TRUE 值将在存在两个字符串。
一个字符串是授予访问权限的用户列表(即“OTV”,存储在用户配置文件中),另一个是有权访问对象的组列表(即“MDSKTUQ”,存储在记录中的 DB 中) .每个字符都是一个用户组的名称。
在真正的 SQL 查询中,我想返回行,其中包含授予用户的任何组。比如:
-- Following should display all files attached to record 145
-- to which has the user granted access:
SELECT FileCaption, FileName, FileType, Category FROM DocFiles
WHERE RecordID = 145 AND CONTAINS(GroupsRead, <<list_of_groups_string>>)
我有一个客户端解决方案,但可行的 SQL 端解决方案会更整洁、更安全。 欢迎评论和讨论。
问候,
橡木
【问题讨论】:
-
您能否添加一些示例表数据,以及预期的结果。并标记使用的 dbms。
-
SQL 不是 dbms。标记您正在使用的 DBMS?\
-
在设计数据库时通常不赞成多值字段是有原因的,这正是因为对这些字段的查询变得很麻烦,或者在某些情况下完全不可能进行。如果可以,您应该考虑将该字段提取到一个单独的表中,每个组或用户一行。
-
对不起标签,我希望我现在做对了(sql-server-2012)
-
绝对可行,但难度取决于 RDBMS。 This reference 可能会有所帮助。我会亲自查看
SUBSTR和LOCATE函数来执行此操作。
标签: sql sql-server-2012 contains string-comparison