如何获取没有'.com'的域名?

How to get the domain name without '.com'?

SELECT substr(Emails, instr(Emails, '@')+1)
      FROM EmployeeEmails;

Returns

gmail.com

我需要连接才能得到:

gmail

检查您的相关数据库查询:

查询(for MySQL)

select (SUBSTRING_INDEX(SUBSTR(Emails, INSTR(Emails, '@') + 1),'.',1)) from EmployeeEmails;

查询(针对Sql服务器):

select SUBSTRING(Emails,(CHARINDEX('@',Emails)+1),1) from EmployeeEmails;

查询(对于 Oracle)

    select substr(Emails,instr(Emails,'@',1)+1) as domain
from EmployeeEmails;

您可以使用 LIKE 和通配符 see here

  • 任何单个字符的下划线字符 (_)。
  • 零个或多个字符的字符串的百分号字符 (%)。

    SELECT email FROM emails WHERE email NOT LIKE '%_@__%.__%'

这将忽略以下情况(有效电子邮件的简单版本):

  • @
  • 前至少有一个字符的电子邮件
  • 在 @ 和 . 之间至少包含两个字符的电子邮件
  • 电子邮件之间至少有两个字符。和结束。

试试这个:-

declare @email sysname = 'testCode@gmail.com'
SELECT substring(@email, charindex('@',@email,0)+1 , (charindex('.',@email,0)-1 - charindex('@',@email,0)))

可以使用REGEXP_REPLACE提取域名:

select regexp_replace(emails, '^[^@]+@([^.]+)\..+$', '') from employeeemails;

这适用于 abcd@efgh.ijkl .

模式的任何电子邮件

模式:

  • ^ 刺痛开始
  • [^@]+ 除@
  • 以外的1到n个字符
  • @ @
  • 符号
  • (记住下面的字符串
  • [^.]+ 除点号外的 1 到 n 个字符 .
  • )要记住的字符串结尾
  • \.一个点.
  • .+ 1 到 n 个字符
  • $ 字符串结尾
  • </code>记住的字符串</li> </ul> <p>这是没有 <code>REGEXP_REPLACE 的老式方法:

    select substr(emails,
                  instr(emails, '@') + 1, 
                  instr(emails, '.', instr(emails, '@') + 1) - instr(emails, '@') - 1
                 )
    from employeeemails;