用于比较 2 个主机 URL 的 SQL 查询
Posted
技术标签:
【中文标题】用于比较 2 个主机 URL 的 SQL 查询【英文标题】:SQL query to compare 2 host URLs 【发布时间】:2021-01-13 06:02:01 【问题描述】:我想比较 2 个 URL 主机名并将它们分类为相等或不相等。
例如,
www.abcd.com/xyz
和 https://www.abcd.com/def
应该被平等对待
www.abcd.com
和 https://www.abcd.com/xyz
应该被平等对待。
www.abcd.com/xyz
和 www.abcdef.com/xyz
应该被视为不相等。
www.abcd.com/xyz
和 www.xyz.com/pqr
应该被视为不相等
我目前正在使用-
Case WHEN regexp_match(a, 'www.*/'::text) = regexp_match(b, 'www.*/'::text) THEN 'Direct'::text
CASE WHEN (regexp_match(tdahw.event_value, 'www.*/'::text) <> regexp_match(a, 'www.*/'::text) THEN 'Referrer'::text
我无法使用这个处理最后一个案例。
我只想将它们分为平等和不平等。一列包含不带https
的url,1 列包含https
。
【问题讨论】:
您可以将网址拆分为它们的组件:***.com/a/11384025/905902 这将使比较变得非常容易。 【参考方案1】:如果您只需要处理https://
,您可以例如为此使用trim
:
trim(leading 'https://' from url_1) = trim(leading 'https://' from url_2)
如果你想处理https
和http
一样,可以使用regexp_replace:
regexp_replace(url_1, '^https0,1://', '') = regexp_replace(url_2, '^https0,1://', '')
如果您经常需要,可以将其放入 SQL 函数中。
【讨论】:
@AbHiNaVAgRaWaL:如果您想要其他内容,您应该在问题中添加该信息。 edit 并将您的尝试添加为格式化文本。不要将代码或附加信息放入 cmets。更详细的样本数据和预期输出也有助于避免对您没有帮助的答案。以上是关于用于比较 2 个主机 URL 的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章