【问题标题】:CASE WHEN multiple partial match BigQueryCASE WHEN 多个部分匹配 BigQuery
【发布时间】:2021-05-11 07:16:51
【问题描述】:

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

id statement
123 I like green
234 I love green
456 I like orange
123 I hate yellow

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

id statement color
123 I like green green
234 I love green green
456 I like orange orange
123 I hate yellow None

我尝试过使用这样的查询:

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`

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

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    你很接近:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多