sql - 如何比较两个不同的逗号分隔字符串值并检查第一个中是否存在来自不同逗号分隔字符串的任何值
问题描述
我希望我能很好地解释这一点。如果有不清楚的地方,请询问
我有一个查询来检索他/她可以访问某些实体的用户的数据。
基本上在我的用户表中有一列用户可以有一个或多个逗号分隔的整数。以下是一些示例:
表格1
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,
我的秒表有一个非常相似的字段。如果我的第二个表中有与此类似的记录:
表#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,
所以我想要实现的是从表#1 中获取例如用户#2 的值,并且我想获取表#2 中的所有用户,其中他们的任何值都包含在用户#2 的值中。因为用户 #2 有 ,1,3,5,12,我应该从表 #2 中得到结果,如下所示:
User #1
User #2
User #3
User #5
User #6
我目前正在使用以下内容:
SELECT a.Name
FROM TABLE2 a
WHERE
CharIndex(','+convert(varchar,a.Agency)+',',(Select Agency from TABLE1 where UserID = 123)) > 0
这似乎并没有产生我正在寻找的结果。如果 TABLE #1 中只有 1 个值,例如 ,3,但没有多个值,这将非常有用。
解决方案
您可以尝试以下查询以获得预期结果。
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
功能。
推荐阅读
- c - 在C中将long转换为float
- html - 我如何使用 :not 给父元素而不给子元素和子子元素一些特定的 CSS?
- vhdl - 我的第一个 VHDL 测试代码中的错误是什么?
- mysql - 如何进行 SQL 查询以选择具有动态间隔的行
- amazon-web-services - 如何在不使用云形成模板中的互联网访问的情况下将 ec2 连接到 s3
- angular - Angular Http 客户端 - 如何将嵌套的参数对象传递给 GET API
- sql - 基于发生的标志更改
- python - 将多维 numpy 数组元素转换为字符串而不转换为科学计数法
- ffmpeg - 在流式传输使用 ffmpeg 时将本地时间作为元数据或字幕添加到每个帧
- php - 如何在 Visual Studio Code 中为 PHP 文件运行调试?