REGEXP_CONTAINS order and Case statement in bigquery

一曲冷凌霜 提交于 2021-01-20 13:43:05

问题


I'm using case statement and REGEXP_CONTAINS.Just wanted to see if the following order will give me the correct output.

 (CASE 
 WHEN REGEXP_CONTAINS(AdSet, '(?i)BUS') THEN "BUS"
 WHEN REGEXP_CONTAINS(AdSet, '(?i)BRA') THEN "BR" 
 WHEN REGEXP_CONTAINS(AdSet, '(?i)DIG') THEN "TR"
 WHEN REGEXP_CONTAINS(AdSet, '(?i)INS') THEN "INS"
 WHEN REGEXP_CONTAINS(AdSet, '(?i)INV') THEN "INV"
 WHEN REGEXP_CONTAINS(AdSet, '(?i)SAV') THEN "SAV"
 WHEN REGEXP_CONTAINS(AdSet, '(?i)TRA') THEN "TR"
 WHEN REGEXP_CONTAINS(AdSet, '(?i)CC')  THEN "CC"    
 WHEN REGEXP_CONTAINS(AdSet, '(?i)HL')  THEN "HL"
 WHEN REGEXP_CONTAINS(AdSet, '(?i)BR')  THEN "BR" 
 
  
 END) as pf

回答1:


Seems correct if you want case insensitive search for the keyword, while in general, string functions are more efficient than REGEX functions, consider to:

REGEXP_CONTAINS(AdSet, '(?i)BUS') THEN "BUS"

=>

STRPOS(UPPER(AdSet), 'BUS') <> 0 THEN "BUS"


来源:https://stackoverflow.com/questions/63591800/regexp-contains-order-and-case-statement-in-bigquery

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!