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

如何编写SQL实现Column1匹配Column2内容并将匹配值存入Column3

实现需求的SQL方案

逻辑说明

判断Column1的字符串是否完整包含Column2的取值,匹配时将Column2的值写入Column3,不匹配时可根据需求置为NULL或其他默认值。

1. 仅查询结果(不修改原表)

通用写法(适配MySQL、SQL Server等大多数支持LIKE语法的数据库)

SELECT 
    Column1,
    Column2,
    CASE WHEN Column1 LIKE CONCAT('%', Column2, '%') THEN Column2 ELSE NULL END AS Column3
FROM 替换为你的实际表名;

2. 更新原表的Column3字段

UPDATE 替换为你的实际表名
SET Column3 = CASE WHEN Column1 LIKE CONCAT('%', Column2, '%') THEN Column2 ELSE NULL END;

不同数据库的适配写法

  • PostgreSQL 可以用strpos函数实现更直观的判断:
    -- 查询语句
    SELECT Column1, Column2, CASE WHEN strpos(Column1, Column2) > 0 THEN Column2 ELSE NULL END AS Column3 FROM 替换为你的实际表名;
    -- 更新语句
    UPDATE 替换为你的实际表名 SET Column3 = CASE WHEN strpos(Column1, Column2) > 0 THEN Column2 ELSE NULL END;
    
  • Oracle 数据库使用INSTR函数实现:
    -- 查询语句
    SELECT Column1, Column2, CASE WHEN INSTR(Column1, Column2) > 0 THEN Column2 ELSE NULL END AS Column3 FROM 替换为你的实际表名;
    -- 更新语句
    UPDATE 替换为你的实际表名 SET Column3 = CASE WHEN INSTR(Column1, Column2) > 0 THEN Column2 ELSE NULL END;
    

注意:如果需要忽略大小写匹配,可将两个字段统一转为大写/小写后再判断,例如MySQL下可写为LOWER(Column1) LIKE CONCAT('%', LOWER(Column2), '%')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:27:01