📌  相关文章
📜  从SQL Server中的表中提取电子邮件的域

📅  最后修改于: 2021-08-25 17:41:34             🧑  作者: Mango

简介
作为一名DBA,您可能会遇到一个需要提取电子邮件地址域(存储在数据库表中的电子邮件地址)的请求。如果要在任何给定表中计算来自电子邮件地址的最常用域名,则可以计算从SQL Server中的“电子邮件”中提取的域名的数量,如下所示。

SQL查询可用于从电子邮件地址中提取域。
让我们创建一个名为“ email_demo ”的表–

create table (ID int, Email varchar (200));

在表email_demo中插入值–

insert into email_demo values(
(1, 'Sam@gfg.com'), (2, 'Khushi@gfg.com'),
(3, 'Komal@gfg.org'), (4, 'Priya@xyz.com'),
(5, 'Sam@xyz.com'), (6, 'Krish@xyz.com'),
(7, 'Neha@gfg.com'), (8, 'Pam@gfg.com'),
(9, 'Mohan@abc.com'), (10, 'Ankit@mno.com'),
(11, 'Kumari@gfg.com'), (12, 'Hina@abc.com'),
(13, 'Jaya@mno.com'), (14, 'Piyush@abc.com'),
(15, 'Khushi@xyz.com'), (16, 'Mona@gfg.org'),
(17, 'Roza@abc.com'));

显示表格内容–

select * from email_demo;
ID Email
1 Sam@gfg.com
2 Khushi@gfg.com
3 Komal@gfg.org
4 Priya@xyz.com
5 Sam@xyz.com
6 Krish@xyz.com
7 Neha@gfg.com
8 Pam@gfg.com
9 Mohan@abc.com
10 Ankit@mno.com
11 Kumari@gfg.com
12 Hina@abc.com
13 Jaya@mno.com
14 Piyush@abc.com
15 Khushi@xyz.com
16 Mona@gfg.org
17 Roza@abc.com

1.从SQL Server中的电子邮件中提取域:
在下面的示例中,我们将使用SUBSTRING函数在每个值中的@符号后选择字符串。

从电子邮件中提取SQL域–

SELECT ID,
SUBSTRING ([Email], CHARINDEX( '@', [Email]) + 1,
LEN([Email])) AS [Domain]
FROM [email_demo];

输出 :

ID Domain
1 gfg.com
2 gfg.com
3 gfg.org
4 xyz.com
5 xyz.com
6 xyz.com
7 gfg.com
8 gfg.com
9 abc.com
10 mno.com
11 gfg.com
12 abc.com
13 mno.com
14 abc.com
15 xyz.com
16 gfg.org
17 abc.com

走近使用:

  • 在这里,我们在SUBSTRING函数中将Source分配为我们的列名’Email’。
  • 接下来,我们使用CHARINDEX函数查找@符号,然后加1,这样起始点将位于@符号之后。
  • 然后,我们使用LEN函数指定结束值。

2.计算SQL Server中从电子邮件中提取的域的数量:
方法1: SQL查询以计数记录数以从电子邮件中提取域名–

SELECT RIGHT ([Email],
LEN([Email]) - CHARINDEX( '@', [Email])) AS [Domain],
COUNT(*) AS [Total Number of Domain]
FROM [email_demo]
WHERE LEN([Email ]) > 0
GROUP BY RIGHT([Email],
LEN([Email]) - CHARINDEX( '@', [Email]));

输出 :

Domain Total Number of Domain
abc.com 4
gfg.com 5
gfg.org 2
mno.com 2
xyz.com 4

方法2: SQL查询以计数记录数以从电子邮件中提取域名–

SELECT SUBSTRING ([Email],
CHARINDEX( '@', [Email] ) + 1, LEN([Email])) AS [Domain],
COUNT(*) AS [Total Number of Domain]
FROM [email_demo]
WHERE LEN([Email]) > 1
GROUP BY SUBSTRING ([Email], CHARINDEX( '@', [Email] ) + 1,
LEN([Email]));

输出 :

Domain Total Number of Domain
abc.com 4
gfg.com 5
gfg.org 2
mno.com 2
xyz.com 4