在没有tsql的mssql中从电子邮件中获取TLD

时间:2014-11-03 11:50:49

标签: sql-server

是否有一个简单的解决方案可以从电子邮件地址获取顶级域名(TLD)?

重要的是,支持.berlin等TLD和info@infrastructure.bdata.de等子域名。

没有TSQL,只能进行一次查询。

1 个答案:

答案 0 :(得分:1)

这是一个例子。用您的真实电子邮件地址替换示例电子邮件地址:

Select  substring(   'mike.meyer@infrastructure.bdata.berlin'    , 1 + 1+  LEN('mike.meyer@infrastructure.bdata.berlin') -  CHARINDEX('.' , reverse('mike.meyer@infrastructure.bdata.berlin')) , LEN('mike.meyer@infrastructure.bdata.berlin')    )   

问题是,charindex()只返回第一个字符,但我们需要最后一个字符。所以我们还需要reverse()。

该陈述执行以下步骤:

  1. 反转字符串并获取最后一个.
  2. 然后我们需要子串。第一个参数是没有反向的完整字符串,第二个参数是启动参数。它是根据TLD的全长计算的。需要为.添加+1,为mssql中的子字符串的起始索引添加第二个+1。
  3. 就是这样!