Google(可能还有其他人)将foo.bar@gmail.com
和foobar@gmail.com
视为同一个邮箱。
假设我的数据库中有用户电子邮件:
foo.bar@gmail.com
我想检查尝试注册foobar@gmail.com
的新用户是否无法注册,因为该电子邮件已经存在。
该方案可能是用户已经注册foobar@gmail.com
并且新用户尝试向foo.bar@gmail.com
注册的另一种方式。为了我的目的,电子邮件是相同的,并且必须是“独特的”。
我试过了
declare @email nvarchar(255);
set @newEmail = 'foobar@gmail.com' -- or 'foo.bar@gmail.com'
select * from Users where REPLACE(Users.Email, '.', '') = REPLACE(@newEmail, '.', '')
但这似乎效率不高,可能与域名部分(gmail.com)发生冲突。
有更好的方法吗?