sql-server - SQL Server 语法 - 使用 in 或 like 与逗号分隔的列
问题描述
我有两个表,我想检查第二个表中是否存在值。问题是在第二个表中,组字段可能是单个值或逗号分隔值。我需要一个查询来检查表 2 中的组值是否作为单个值或逗号分隔值存在
表格1
ID | 团体 |
---|---|
1 | 第 1 组 |
2 | 第 2 组 |
3 | 第 3 组 |
5 | 第 4 组 |
6 | 第 4 组 |
7 | 第 2 组 |
表 2
团体 |
---|
组 1、组 2 |
第 3 组 |
选择查询的结果将是。
表 1 过滤结果
ID | 团体 |
---|---|
1 | 第 1 组 |
2 | 第 2 组 |
3 | 第 3 组 |
7 | 第 2 组 |
解决方案
理想情况下,您不应将多条信息存储在单个列中。
但是您可以STRING_SPLIT
在子查询中使用基于集合的方式来解决这个问题。
SELECT *
FROM t1
WHERE t1.[group] IN (
SELECT TRIM(s.value)
FROM t2
CROSS APPLY STRING_SPLIT(t2.[group], ',') s
);
推荐阅读
- python - 使用 Python 解析 XML 并打印整个元素
- http - 谷歌云负载均衡器不返回内容编码:gzip
- python - 删除 CSV 文件中不是以 python 中的数字开头的所有行
- sas - SAS PROC SQL - 如何将字符串转换为日期
- python - 在不同条件下在一行中接收不同数量的返回值
- microservices - 是否可以从可执行模式中获取类型定义?
- jquery - 对多个 div 使用相同的 JQuery,但一次应用一个 div
- angular - 如何覆盖材质 CSS 样式?
- opencart - Opencart 3 购物车图标
- fiware - FIWARE Idm 中的高级 XACML 规则示例