首页 > 解决方案 > 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 组

标签: sql-server

解决方案


理想情况下,您不应将多条信息存储在单个列中。

但是您可以STRING_SPLIT在子查询中使用基于集合的方式来解决这个问题。

SELECT *
FROM t1
WHERE t1.[group] IN (
    SELECT TRIM(s.value)
    FROM t2
    CROSS APPLY STRING_SPLIT(t2.[group], ',') s
    );

db<>小提琴


推荐阅读