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

如何使用STRING_SPLIT函数比对匹配两张表的发票字段值

解答

完全可以使用STRING_SPLIT函数实现这个匹配需求。
你之前的写法有两个小问题:一是函数名拼写错误,正确函数名是STRING_SPLIT而非SPLIT_STRING;二是需要先遍历表2所有行的逗号分隔字段做拆分,不能直接在子查询里单次调用拆分函数。

补全后的可直接运行的SQL如下:

SELECT *
FROM TABLE1
WHERE INVOICE IN (
    -- 拆分后返回的单值列固定名为value,加TRIM规避逗号前后的空格干扰匹配
    SELECT TRIM(value)
    FROM TABLE2
    -- 对表2每一行的Invoices字段做拆分,把多值列表拆成独立的单值行
    CROSS APPLY STRING_SPLIT(INVOICES, ',')
)

注意事项

  • 上述写法适用于SQL Server 2016及以上版本、Azure SQL系列数据库,这类环境原生支持STRING_SPLIT函数
  • 如果你的Invoice字段是数值类型,遇到隐式类型转换报错时,可以把拆分后的值做显式类型转换,将子查询里的TRIM(value)替换为CAST(TRIM(value) AS INT)即可
  • 按照你给出的样例数据运行上述SQL,会返回表1中Invoice为1234、6666的两条记录,这两个编号存在于表2的逗号分隔发票列表中,其余表1记录不会被匹配到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:03:37