【发布时间】:2018-06-18 10:19:45
【问题描述】:
在我的数据库中,有一个显示登录页面的表格,我要做的是分类流量是否来自 SEO 渠道。当着陆页与模式/countrycode/index.aspx完全相等时,则应视为'SEO',否则标记为'non-SEO'。
表格应该是这样的
landing_page channel
/en/index.aspx SEO
/de/index.aspx SEO
/es/features/mobile-apps/index.aspx Non-SEO
/ja/products/product01123 Non-SEO
为此,我在 Redshift 中编写了一个正则表达式,例如
SELECT
landing_page,
CASE
WHEN
regexp_substr(landing_page, '/\/[a-z]{2,4}\/index.aspx') IS NULL
THEN 'Non-SEO' ELSE 'SEO'
END channel
FROM
marketing_table
我在 regextester 中进行了测试,它非常适合我。但是,当我将它应用到 Redshift 中时,结果如下所示
landing_page channel
/en/index.aspx SEO
/de/index.aspx SEO
/es/features/mobile-apps/index.aspx SEO
/ja/products/product01123 SEO
/download/testing NON-SEO
也就是说,/和/index.aspx之间的所有字符串都被考虑在内,我需要的是完全匹配。有什么建议可以解决吗?
非常感谢您的帮助!
更新:抱歉大家更新晚了。问题还没有解决。最令人困惑的一点是,对于同一个着陆页,不同流量,有的被认为是SEO,有的则不是,例如
landing_page channel
/en/index.aspx SEO
/en/index.aspx Non-SEO
我们尝试了不同的方法,例如不使用正则表达式,而是使用字符串的长度,例如 (12,13,14,15,16) 中的 len(landing_page)。有人对此有任何想法吗?
【问题讨论】:
-
我的回答有帮助吗?请注意,您应该真正使用
$来匹配字符串的结尾,并使用^来匹配字符串的开头。
标签: sql regex amazon-redshift