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

将Python逗号分隔列匹配逻辑转换为Redshift SQL实现

将Python多列表全包含判断逻辑转为Amazon Redshift SQL

核心逻辑转换说明

你的需求是基于逗号分隔的City Names列,判断是否包含目标列表的所有元素并赋值,用Redshift SQL可通过CASE语句配合字符串/数组函数实现,以下是具体方案:

方案1:基础字符串匹配(适合无空格/特殊字符的城市名称)

直接用POSITION函数检查每个目标城市是否存在于City Names中,逻辑清晰易读:

SELECT
    "City Names",
    CASE
        -- 匹配list1所有元素(示例:New York, London, Tokyo),赋值3
        WHEN POSITION('New York' IN "City Names") > 0
             AND POSITION('London' IN "City Names") > 0
             AND POSITION('Tokyo' IN "City Names") > 0
        THEN 3
        -- 匹配list2所有元素(示例:Paris, Berlin) 或 list3所有元素(示例:Sydney, Melbourne),赋值2
        WHEN (POSITION('Paris' IN "City Names") > 0 AND POSITION('Berlin' IN "City Names") > 0)
             OR (POSITION('Sydney' IN "City Names") > 0 AND POSITION('Melbourne' IN "City Names") > 0)
        THEN 2
        -- 其他情况可按需赋值(比如0或NULL)
        ELSE 0
    END AS "#_of_target_cities"
FROM df1;

方案2:数组+去空格匹配(适合带空格/格式不统一的城市名称)

如果City Names中的城市前后有空格(比如"New York, London"),先将字符串转为数组并去除每个元素的空格,再判断元素是否存在:

SELECT
    "City Names",
    CASE
        -- 检查list1所有元素是否都在处理后的城市列表中
        WHEN 'New York' IN (SELECT TRIM(UNNEST(STRING_TO_ARRAY("City Names", ','))))
             AND 'London' IN (SELECT TRIM(UNNEST(STRING_TO_ARRAY("City Names", ','))))
             AND 'Tokyo' IN (SELECT TRIM(UNNEST(STRING_TO_ARRAY("City Names", ','))))
        THEN 3
        -- 检查list2或list3的所有元素是否都存在
        WHEN ('Paris' IN (SELECT TRIM(UNNEST(STRING_TO_ARRAY("City Names", ','))))
              AND 'Berlin' IN (SELECT TRIM(UNNEST(STRING_TO_ARRAY("City Names", ','))))
             )
             OR
             ('Sydney' IN (SELECT TRIM(UNNEST(STRING_TO_ARRAY("City Names", ','))))
              AND 'Melbourne' IN (SELECT TRIM(UNNEST(STRING_TO_ARRAY("City Names", ','))))
             )
        THEN 2
        ELSE 0
    END AS "#_of_target_cities"
FROM df1;

关键注意事项

  • 优先级:CASE语句从上到下执行,先判断list1的条件,确保同时满足list1和list2时优先赋值3
  • 替换目标列表:把示例中的城市名称替换成你实际的list1、list2、list3元素即可
  • 特殊字符处理:如果城市名称包含逗号或其他特殊字符,建议用方案2,避免匹配错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:05:24