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

TSQL实现单表列值与另一表文本字段匹配并插入数据

无游标实现 stain 匹配与批量插入方案

核心思路

通过SQL的字符串模糊匹配+JOIN关联实现批量匹配,结合INSERT...SELECT语句一次性完成数据插入,全程无需游标。

实现SQL语句

SQL Server版本

INSERT INTO stains_in_report (stain_name, acc_id)
SELECT t1.stain_name, t2.acc_id
FROM 表1 t1
INNER JOIN 表2 t2 
  ON CHARINDEX(t1.stain_name, t2.results) > 0
-- 若需避免重复插入,添加DISTINCT
-- SELECT DISTINCT t1.stain_name, t2.acc_id

MySQL/Oracle版本

INSERT INTO stains_in_report (stain_name, acc_id)
SELECT t1.stain_name, t2.acc_id
FROM 表1 t1
INNER JOIN 表2 t2 
  ON INSTR(t2.results, t1.stain_name) > 0

通用LIKE语法版本

INSERT INTO stains_in_report (stain_name, acc_id)
SELECT t1.stain_name, t2.acc_id
FROM 表1 t1
INNER JOIN 表2 t2 
  ON t2.results LIKE CONCAT('%', t1.stain_name, '%')

关键说明

  1. 匹配逻辑:判断表2的results文本中是否包含表1的stain_name,匹配成功则关联两条记录
  2. 自增ID处理:表3的id字段若为自增主键,无需在INSERT中指定,数据库会自动生成
  3. 注意事项:
    • 若stain_name包含%、_等LIKE通配符,需提前转义避免匹配错误
    • 大文本字段匹配性能不佳时,建议为results建立全文索引
    • 若存在重复匹配场景,添加DISTINCT关键字或关联表3做存在性判断,防止重复插入

验证结果

用示例数据执行上述语句后,表3会生成如下数据(与预期一致):

ID    stain_name    acc_id
1      AA            33022  
2      AA            33175
3      Adenovirus    33137  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:25:08