Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 查询以获取基于特定域名的电子邮件地址_Sql Server - Fatal编程技术网

Sql server 查询以获取基于特定域名的电子邮件地址

Sql server 查询以获取基于特定域名的电子邮件地址,sql-server,Sql Server,我想从以以下域名结尾的表格中获取电子邮件地址 @yahoomail.com @accelerator.com @learning.com @cloud.vintage.com s的回答是正确的,但我想补充一点建议。如果计划多次执行此搜索并希望提高性能,则可以添加仅包含域的持久化计算列 在下面的代码中,我添加了一个提取域(包括@)的计算列,并在该列上添加了一个索引 DECLARE @test TABLE ( Email nvarchar(255), Domain AS SUBST

我想从以以下域名结尾的表格中获取电子邮件地址

@yahoomail.com
@accelerator.com
@learning.com
@cloud.vintage.com
s的回答是正确的,但我想补充一点建议。如果计划多次执行此搜索并希望提高性能,则可以添加仅包含域的持久化计算列

在下面的代码中,我添加了一个提取域(包括@)的计算列,并在该列上添加了一个索引

DECLARE @test TABLE (
    Email nvarchar(255),
    Domain AS SUBSTRING(Email, CHARINDEX('@', Email), 255) PERSISTED,
    INDEX IX_Domain (Domain))

INSERT INTO @test VALUES ('abc@123.com')

SELECT * FROM @test WHERE Domain = '@123.com'
此查询将给出以下结果:

Email        Domain
abc@123.com  @123.com

像“%@yahoomail.com”这样的电子邮件或像“%@accelerator.com”这样的电子邮件在哪里…
这能回答您的问题吗?警告一句:使用“%”(somestring)等
搜索带有“ends with”条件的搜索在一个大表上效率很低,速度也很慢。不幸的是,由于前导
%
的条件,没有索引可以帮助加快速度…如果我想排除这些域,那么NOT LIKE将正常工作
Email        Domain
abc@123.com  @123.com