BigQuery中REGEXP_CONTAINS的CASE WHEN等价改写问题求助
问题解决:BigQuery中LIKE语句与正则匹配不一致的修正
差异原因分析
原正则中Chemists分类的匹配规则和你当前的LIKE语句存在关键差异:
- 原正则的
^\/chemist\/.*$要求路径必须以/chemist/开头(注意chemist后有斜杠),仅匹配如/chemist/detail这类路径;你的/chemist%会匹配所有以/chemist开头的内容,包括/chemistxyz这类不符合原规则的路径。 - 原正则的
^\/chemical\/.*$要求路径必须以/chemical/开头(chemical后有斜杠);你的/chemical%同样没有限制斜杠,导致匹配范围过宽。 - 只有
^\/chemists.*$和你的/chemists%逻辑一致,都是匹配以/chemists开头的任意路径。
修改后的等价CASE语句
CASE WHEN (page_path LIKE '/landing%' OR page_path LIKE '/lp%' OR page_path LIKE '/pages%' ) THEN "Lander" WHEN (page_path LIKE '/chemist/%' OR page_path LIKE '/chemical/%' OR page_path LIKE '/chemists%' ) THEN 'Chemists' ELSE 'Others' END
修改说明
- 将
/chemist%调整为/chemist/%,确保chemist后必须包含斜杠,和原正则^\/chemist\/.*$逻辑完全一致。 - 将
/chemical%调整为/chemical/%,对应原正则^\/chemical\/.*$的匹配规则。 /chemists%保持不变,和原正则^\/chemists.*$等价。
内容的提问来源于stack exchange,提问作者Rookie_123
相关产品推荐
相关产品推荐

