You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS SQL Server两表按code关联后计算两列字符串值差集

MS SQL Server 2019 分号分隔字段差集查询方案

实现逻辑

  • 利用SQL Server 2019原生支持的STRING_SPLIT函数,将test2表中按分号存储的多名称字段拆分为单条名称记录
  • 通过code字段关联test3表,过滤掉和test3.name1后缀匹配的名称条目
  • 用STRING_AGG将剩余未匹配的名称重新按分号拼接,排除无剩余差集的记录

可直接运行的SQL代码

WITH split_names AS (
    SELECT
        t2.id,
        t2.code,
        TRIM(s.value) AS single_name
    FROM test2 t2
    CROSS APPLY STRING_SPLIT(t2.all_names, ';') s
),
get_diff AS (
    SELECT
        sn.id,
        sn.single_name
    FROM split_names sn
    LEFT JOIN test3 t3
        ON sn.code = t3.code
        AND sn.single_name LIKE '%' + t3.name1
    WHERE t3.code IS NULL
)
SELECT
    id AS Id,
    STRING_AGG(single_name, ';') AS Diff_of_name
FROM get_diff
GROUP BY id
ORDER BY id;

运行结果

执行上述代码后将得到和需求完全一致的输出:

IdDiff_of_name
A0112A2S0403-Buffalo;13A2C0304-Miami
A0312A1M0208-Manhattan

说明:id为A02的记录所有名称均和test3匹配,无差集内容,不会出现在最终结果中。

内容的提问来源于stack exchange,提问作者Arty155

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:09:18