首页 > 解决方案 > CASE WHEN 多个部分匹配 BigQuery

问题描述

我正在尝试根据另一列中的部分匹配值在我的 BigQuery 表中创建一个新列。这是我正在尝试做的一个例子。假设这是我的桌子:

ID 陈述
123 我喜欢绿色
234 我爱绿色
456 我喜欢橙色
123 我讨厌黄色

我想要做的是创建一个如下所示的新表:

ID 陈述 颜色
123 我喜欢绿色 绿色
234 我爱绿色 绿色
456 我喜欢橙色
123 我讨厌黄色 没有任何

我试过使用这样的查询:

SELECT ID, Statement
CASE WHEN Statement IN ('green') THEN 'green' ELSE 'None' END AS color
CASE WHEN Statement IN ('orange') THEN 'orange' ELSE 'None' END AS color
FROM `data.Table1`

但这当然只有在完全匹配的情况下才有效。如何获得具有基于上述部分匹配的值的新列?提前致谢。

标签: sqlgoogle-bigquery

解决方案


你很接近:

SELECT ID, Statement,
       (CASE WHEN Statement LIKE '%green%' THEN 'green' 
             WHEN Statement LIKE '%orange%' THEN 'orange' 
             ELSE 'None'
        END) as color
FROM `data.Table1`;

注意:这将返回匹配的第一个颜色,这与您表达问题的方式一致。


推荐阅读