在SQL中提取字符串的部分

在SQL中提取字符串的部分,sql,vertica,Sql,Vertica,我在一个表中有url数据。我想创建一个显示第二级(sld)和顶级域(tld)以及子域的视图。如何在ansisql中提取这个? 我使用的数据库只支持ansi sql,没有诸如reverse之类的酷函数 以下是数据: TLD = -- The top-level domain (.com, .org, .info, .us) SLD = -- The second-level domain (twitter, yahoo, facebook, google) second part of

我在一个表中有url数据。我想创建一个显示第二级(sld)和顶级域(tld)以及子域的视图。如何在ansisql中提取这个? 我使用的数据库只支持ansi sql,没有诸如reverse之类的酷函数

以下是数据:

  TLD =  -- The top-level domain (.com, .org, .info, .us)
  SLD =  -- The second-level domain (twitter, yahoo, facebook, google) second part of URL
  SUBDOMAIN = -- The subdomain domain (www, search.google, search.espn) first part of URL // tricky
这是我使用的逻辑。但我无法正确获取子域。我想在提取TLD和SLD后反转并获取剩余的,但是Vertica不支持反转功能

以下是查询和示例数据(注意:SPLIT_部分在指定的字符处拆分字符串):

该表有两列,日期和URL 以下是示例URL:

search.mywebsearch.com   (TLD = com, SLD = mywebsearch, subdomain = search)
search.earthlink.net     
topix.com
main.welcomescreen.intrepid.com
ad.yieldmanager.com
google.com
news.google.com

这真的是一件很难做对的事情,尤其是当你的数据很嘈杂时,就像大数据一样

你能得到http://作为前缀吗? 那么像www.sub.dom.com这样的网站呢? TLD之后的所有东西都洗干净了吗

出于这些原因,我们对尝试在SQL中实现拆分持谨慎态度。相反,我们使用了VICICA的UTF功能,并在C++中编写了一个拆分器。我认为我们不希望这样做,但我们只是不相信SQL足够健壮

search.mywebsearch.com   (TLD = com, SLD = mywebsearch, subdomain = search)
search.earthlink.net     
topix.com
main.welcomescreen.intrepid.com
ad.yieldmanager.com
google.com
news.google.com