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

如何结合条件表达式检查子字符串匹配并填充BRANDS字段?

SQL逻辑实现解决方案

需求说明

需对合并后的表执行以下逻辑:

  • 筛选出Keyword存在于Names字段中的记录
  • 对筛选后的记录按规则更新BRANDS字段:
    1. 若SUPPLIER1为空或等于<NA>,则BRANDS设为YES
    2. 若SUPPLIER1不为空,且Supplier与SUPPLIER1相等,则BRANDS设为2*Yes
    3. 其他情况保持BRANDS原内容不变

原始数据

NamesSupplierCompany1KeywordSUPPLIER1BRANDS
ADIDAS PREDATOR 17.1ADIDASPREDATOR
NIKE MERCURIAL 2020NIKEPREDATOR
NIKE VAPOR 2021NIKEPREDATOR
NEW BALANCE FURONJDPREDATOR
PUMA RAPIDO 21.3STADIUMPREDATOR
ADIDAS PREDATOR 17.1ADIDASPREDATORADIDAS
ADIDAS PREDATOR 17.1ADIDASPREDATORJD

完整SQL代码

SELECT 
    Names,
    Supplier,
    Company1,
    Keyword,
    SUPPLIER1,
    CASE
        -- 先判断Keyword是否包含在Names中
        WHEN Names LIKE '%' || Keyword || '%' THEN
            CASE
                -- SUPPLIER1为空或为<NA>时,赋值YES
                WHEN SUPPLIER1 IS NULL OR SUPPLIER1 = '<NA>' THEN 'YES'
                -- SUPPLIER1与Supplier相等时,赋值2*Yes
                WHEN SUPPLIER1 = Supplier THEN '2*Yes'
                -- 其他情况保留原BRANDS值
                ELSE BRANDS
            END
        -- 不满足Keyword在Names中的记录,保留原BRANDS值
        ELSE BRANDS
    END AS BRANDS
FROM 
    TABLE;

代码说明

  1. 筛选逻辑:通过Names LIKE '%' || Keyword || '%'判断Keyword是否包含在Names中,嵌套在CASE外层确保仅符合条件的记录触发BRANDS赋值逻辑。
  2. BRANDS赋值逻辑:
    • 内层CASE先校验SUPPLIER1状态,为空或等于<NA>时返回YES
    • 若SUPPLIER1不为空,对比Supplier与SUPPLIER1,相等则返回2*Yes
    • 不符合上述条件的记录,保留原BRANDS字段内容
  3. 若无需保留全部原始字段,可按需调整SELECT后的字段列表,但需保证逻辑完整性。

目标输出

NamesSupplierCompany1KeywordSUPPLIER1BRANDS
ADIDAS PREDATOR 17.1ADIDASPREDATORYES
NIKE MERCURIAL 2020NIKEPREDATOR
NIKE VAPOR 2021NIKEPREDATOR
NEW BALANCE FURONJDPREDATOR
PUMA RAPIDO 21.3STADIUMPREDATOR
ADIDAS PREDATOR 17.1ADIDASPREDATORADIDAS2*Yes
ADIDAS PREDATOR 17.1ADIDASPREDATORJD

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:57:23