任何人都可以给我一些示例TSQL代码来比较两个电子邮件地址来检查它们是否相等?TSQL函数比较两个字符串
CLR函数不是一个选项。我尝试过,但由于某种原因,我们的DBA完全反对在SSMS中使用CLR函数。
我知道如何从电子邮件地址获取域名(例如:mycompany.com)。
真的很感激任何建议提前
任何人都可以给我一些示例TSQL代码来比较两个电子邮件地址来检查它们是否相等?TSQL函数比较两个字符串
CLR函数不是一个选项。我尝试过,但由于某种原因,我们的DBA完全反对在SSMS中使用CLR函数。
我知道如何从电子邮件地址获取域名(例如:mycompany.com)。
真的很感激任何建议提前
不是真的知道你正在寻找。从你的问题,我明白你需要检查2个电子邮件地址相似/不相似。
为什么你不能使用它?
declare @email1 varchar(100) set @email1 = '[email protected]'
declare @email2 varchar(100) set @email2 = '[email protected]'
IF
@[email protected]
BEGIN
PRINT 'Same Email'
END
ELSE
BEGIN
PRINT 'Not Same Email'
END
拉吉
非常好的简单实现,但没有考虑到CI和CS。使用校验和来满足粒度需求,如Aleksandr所述。 – GoldBishop
测试
感谢两个电子邮件地址是否具有相同的域:
declare @email1 varchar(100) set @email1 = '[email protected]'
declare @email2 varchar(100) set @email2 = '[email protected]'
select
case when
right(@email1, len(@email1) - charindex('@', @email1)) =
right(@email2, len(@email2) - charindex('@', @email2))
then 'Same domain'
else 'Different domains'
end
谢谢大家的回答。我得到了我一直在寻找的 –
在SQL Server 2005+使用功能校验和()
校验计算散列值,称为校验,在它的参数列表。散列值旨在用于构建散列索引。如果CHECKSUM的参数是列,并且索引是根据计算的CHECKSUM值构建的,那么结果就是一个哈希索引。这可以用于列上的平等搜索。 更多信息有关CHECKSUM()
DECLARE @email1 varchar(100) = '[email protected]'
DECLARE @email2 varchar(100) = '[email protected]'
SELECT CASE WHEN CHECKSUM(@email1) = CHECKSUM(@email2) THEN 'Same Email'
ELSE 'Different Email' END
尽管这是一个老帖子,我想使用校验和解决方案发表意见是很重要的。根据定义,校验和属于有限空间,因此具有有限数量的不同值。用32位数字,有4,294,967,295个可能的值。我很想说,当两个电子邮件地址产生相同的校验和时,只有4,294,967,295个可能的值可能会导致潜在的冲突。根据Raj的建议,纯字符串比较(email1 = email2)可以防止这种冲突,因为它们本身的电子邮件地址是唯一的。
[http://preshing.com/20110504/hash-collision-probabilities/][2]
,嗯,你并不需要一个UDF来比较两个字符串是否相等 - 这有什么错用'='? – Blorgbeard
通过比较你是指相似还是相等? – Chandu
您的问题表明您知道如何从电子邮件地址获取域名 - 只需比较这些字符串?或者是一个错字,你打算说你*不知道? – Blorgbeard