【问题标题】:Problem with using regex_match in Redshift在 Redshift 中使用 regex_match 的问题
【发布时间】:2021-01-27 15:59:04
【问题描述】:

我正在使用以下代码进行正则表达式匹配,但出现此错误:

错误:

无效操作:函数regexp_matches(character varying, character varying)不存在;

代码:

WHEN REGEXP_MATCHes (tdahw.referrer, 'www.*/'::text) IS NOT NULL AND     REGEXP_MATCHes(tdahw.event_value, 'www.*/'::text) = REGEXP_MATCHes(tdahw.referrer, 'www.*/'::text) AND tdahw.rolling_count = 1 THEN 'Direct'::text
WHEN REGEXP_MATCHes(tdahw.referrer, 'www.*/'::text) IS NOT NULL AND REGEXP_MATCHes(tdahw.event_value, 'www.*/'::text) <> REGEXP_MATCHes(tdahw.referrer, 'www.*/'::text) AND tdahw.rolling_count = 1 THEN 'Referrer'::text
WHEN REGEXP_MATCHes(tdahw.referrer, 'www.*/'::text) IS NULL THEN 'Referrer'::text

如何改正?

【问题讨论】:

  • 请提供示例数据、期望的结果以及您要实现的逻辑的说明。
  • 样本数据和预期结果:www.abcd.com/xyz 和abcd.com/def 应该被同等对待 www.abcd.com 和abcd.com/xyz 应该被同等对待。 www.abcd.com/xyz 和 www.abcdef.com/xyz 应被视为不相等。 www.abcd.com/xyz 和 www.xyz.com/pqr 应该被视为不相等

标签: sql regex amazon-redshift


【解决方案1】:

使用~:

WHEN tdahw.referrer ~ 'www.*/'::text AND 
     tdahw.event_value ~ 'www.*/'::text AND
     tdahw.referrer ~ 'www.*/'::text AND
     tdahw.rolling_count = 1

【讨论】:

  • 这些情况是否按上述方法处理? 1)REGEXP_MATCHes(tdahw.event_value, 'www.*/'::text) = REGEXP_MATCHes(tdahw.referrer, 'www.*/'::text) 2) REGEXP_MATCHes (tdahw.referrer, 'www.*/': :text) 不为空
  • @slayer1996 。 . . ~ 返回一个布尔值。您正在尝试比较两个匹配的结果?
  • 是的。查询第一行AND之后的部分是比较
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 2019-10-22
  • 2018-02-06
  • 1970-01-01
相关资源
最近更新 更多