如何比较两个不同的逗号分隔的字符串值,以及如何检查第一个中是否存在不同逗号分隔的字符串中的任何值

时间:2019-01-29 11:20:12

标签: sql sql-server-2008

我希望我能解释清楚。如果不清楚,请询问

我有一个查询来检索用户可以访问某些实体的数据。

基本上在我的用户表中有一列,用户可以使用一个或多个逗号分隔的整数。以下是一些示例:

表#1

User.query.join(Device, User.id == Device.id)\
                .add_columns(User.id, User.name, Device.private_token)\
                .filter_by(User.email == data['email']).all()

我的秒表有一个非常相似的字段。 如果我在第二个表中有类似以下记录:

表#2

User #1 value: ,1,
User #2 value: ,1,3,5,12,
User #3 value: ,12,
User #4 value: ,14,3,5, 
User #5 value: ,14, 

因此,我要实现的目标是从表#1中获取用户#2的值,并且我想获取表#2中的所有用户,其中它们的任何值都包含在用户#2的值中。 由于用户#2具有,1、3、5、12,因此我应该从表2中获得结果,如下所示:

User #1 value: ,3,
User #2 value: ,3,
User #3 value: ,3,
User #4 value: ,10,
User #5 value: ,11,5,12,
User #6 value: ,5,12,

我当前正在使用以下内容:

User #1 
User #2
User #3
User #5 
User #6

这似乎并没有产生我想要的结果。 如果表#1中只有1个值(例如,3),而不是多个值,那么这将非常有用。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询以获得预期结果。

SELECT DISTINCT a.Name
FROM TABLE2 a,
     dbo.Split((SELECT Agency
                  FROM TABLE1
                  WHERE UserID = 2),',') AS b
WHERE a.Agency LIKE '%,'+b.Slit_Func_ColumnName+',%'

使用SPLIT函数。