简介:
作为一名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 | |
---|---|
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 |