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

Hive SQL:如何判断列值是否存在于另一列逗号分隔列表中

筛选november_product不在december_product逗号列表中的记录

原始表(表A)

idnovember_productdecember_product
123AA,C,D
123BA,C,D
456CE,F,G

需求说明

筛选出november_product的值不存在于同条记录december_product逗号分隔列表中的记录,期望结果如下:

期望结果表

idnovember_productdecember_product
123BA,C,D
456CE,F,G

可行解决方法

根据不同数据库环境,提供以下几种方案:

1. MySQL 环境

使用FIND_IN_SET()函数直接检查值是否在逗号列表中,返回0表示不存在:

SELECT id, november_product, december_product
FROM A
WHERE FIND_IN_SET(november_product, december_product) = 0;

2. PostgreSQL 环境

将逗号字符串转为数组,再用<> ALL()判断值不在数组内:

SELECT id, november_product, december_product
FROM A
WHERE november_product <> ALL(string_to_array(december_product, ','));

3. SQL Server 环境

用STRING_SPLIT()拆分字符串,结合NOT EXISTS子查询筛选:

SELECT id, november_product, december_product
FROM A
WHERE NOT EXISTS (
    SELECT 1
    FROM STRING_SPLIT(A.december_product, ',') AS sp
    WHERE sp.value = A.november_product
);

4. 通用兼容写法(适配多数数据库)

通过拼接前后逗号避免部分匹配错误(比如防止"AB"被误判为在"A,ABC"中):

SELECT id, november_product, december_product
FROM A
WHERE CONCAT(',', december_product, ',') NOT LIKE CONCAT('%,', november_product, ',%');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:32:55