按数据中最短的公共后缀进行分组

时间:2014-08-27 15:06:11

标签: sql-server sql-server-2008 tsql

我有一张包含FQDN列表的表格,例如:

www.bbc.co.uk
bbc.co.uk
bbc.com
www.bbc.com
www.live.bbc.co.uk
www.live.bbc.com

我想通过域名对这些内容进行分组;不是确切的完整域名,而是数据中存在的最短匹配域名。例如,在上面的例子中,我想分组

www.bbc.co.uk
bbc.co.uk
www.live.bbc.co.uk

一起,因为他们有共同的"后缀" bbc.co.uk

这些域名可能无关紧要,但也可能在解决方案中起作用 - 任何人都可以建议用最短的公共后缀GROUP将数据放在一起吗?

编辑:根据要求,作为输出我理想地喜欢:

Domain       Count
bbc.co.uk    3
bbc.com      3

3 个答案:

答案 0 :(得分:1)

如果您不知道要在分组中添加多少后缀,那将很难。

也许您可以尝试按最后一个后缀(在最后一个点之后)进行分组。 然后,如果得到结果,请添加下一个后缀和组。 然后,如果你得到了结果,再添加一个......

答案 1 :(得分:0)

如果您首先使用nslookup将域类型转换为IP地址,则可以获得相同数量的Link

或者,存在包含已知域名列表的整个数据库。 Link2

答案 2 :(得分:0)

我设法解决了这个问题:我已经介绍了一个临时的" MasterDomainName"字段到数据库,我已用:

更新了它
UPDATE r1
SET r1.MasterDomainName= r2.domainname
FROM @results r1
LEFT JOIN @results r2
ON r2.domainname = right(r1.domainname,len(r2.domainname))

它并不完美,但它让我关闭到我需要的地方。感谢大家的投入。