Bigquery CASE 函数未按预期工作

Bigquery CASE function not working as expected

我有一个 brand_name 的列表,需要使用 CASE + REGEX 将它们匹配到不同的 brand_type。

然而,bigquery 似乎没有像预期的那样正确分类 brand_name,即所有应该属于“其他”案例的东西都被分类为“家具”

这里只是一个简化的查询,用于显示正在使用的逻辑:

SELECT CASE WHEN REGEXP_CONTAINS(brand_name, r"pen|scissors")= TRUE THEN 'Stationery'
WHEN REGEXP_CONTAINS(brand_name, r"chair|table")= TRUE THEN 'Furniture'
WHEN REGEXP_CONTAINS(brand_name, r"cup|pot")= TRUE THEN 'Household'
ELSE 'Stationery'
END AS brand_type FROM table

例如,期望纸张被归类为“文具”,但它却被归类为“家具”:

id brand_name brand_type
1 pen Stationery
2 chair Furniture
3 cup Household
4 paper Furniture

改用下面的方法

SELECT CASE 
  WHEN REGEXP_CONTAINS(brand_name, r"pen|scissors") THEN 'Stationery'
  WHEN REGEXP_CONTAINS(brand_name, r"chair|table") THEN 'Furniture'
  WHEN REGEXP_CONTAINS(brand_name, r"cup|pot") THEN 'Household'
  ELSE 'Stationery'
END AS brand_type 
FROM table      

如您所见,您有额外的 CASE 这打破了逻辑。
你也不需要使用 =TRUE