在 Redshift 中使用 regex_match 的问题
Posted
技术标签:
【中文标题】在 Redshift 中使用 regex_match 的问题【英文标题】:Problem with using regex_match in Redshift 【发布时间】: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 应该被视为不相等 【参考方案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之后的部分是比较以上是关于在 Redshift 中使用 regex_match 的问题的主要内容,如果未能解决你的问题,请参考以下文章