SQL电子邮件验证约束

时间:2011-08-04 12:24:23

标签: sql sql-server-2005 validation constraints email-validation

我有一个包含Email字段的数据库表。不知何故,无效的电子邮件地址已通过应用程序验证,并进入数据库字段。

如何在此字段中添加约束,以便无法存储无效的电子邮件地址?

3 个答案:

答案 0 :(得分:1)

这取决于有效对您意味着什么。对我来说,电子邮件地址可能有效(也就是说,它是根据RFC 5322正确形成的),但我可能无法发送给它。您是否需要测试a)地址格式或b)您向其发送电子邮件的能力取决于应用程序。

如果您只是想确保用户的电子邮件地址格式正确,那么您将无法通过正则表达式进行验证。祝你好运。有关令人沮丧的详细信息,请参阅RFC 3696,“3。对电子邮件地址的限制。

在我的脑海中,以下是我过去用来帮助客户做出有关电子邮件验证的决定的一些指导要点。

  • 用户希望收到我们的电子邮件;假设用户有动机 更正错误。 (接受带有“@”符号和“。”的任何内容 大致正确的地方。)
  • 存在隐私问题;发送电子邮件到用户的地址,和 要求用户单击链接进行确认。 (你仍然可以接受 任何带有“@”符号和“。”的东西。在大致正确的地方。 需要数据库和Web应用程序开发之间的合作。)
  • 涉及本地政策。将电子邮件地址限制为此 真实有效电子邮件地址的任意子集。 (我见过这个时候 一家公司收购另一家公司,并要求每个人都这样做 在这些电子邮件帐户实际上之前分配了一个新的电子邮 创建。)

根据您的走向,您需要更宽松或更紧凑的正则表达式。根据我的经验,大多数时候大多数人都会使用更宽松的验证。

答案 1 :(得分:0)

根据this article,SQL Server支持CHECK约束中的正则表达式。 再加上一个可靠的电子邮件验证正则表达式,你应该很高兴。

您还可以在LIKE约束中使用CHECK

如果您使用的是SQL Server 2005或更高版本,并且在CHECK约束中调用它,则可以在SQL Server中enable CLR Integrationcreate a CLR function。 CLR函数将处理正则表达式验证。

答案 2 :(得分:0)

请看一下我在这里发布的最简单的例子

  

SQL constraint E-Mail