使用Microsoft SQL Server 2005及更高版本,我使用什么代码来验证电子邮件地址是否正确?
是否有电子邮件数据类型?
是否存在电子邮件检查约束?
是否有电子邮件规则?
是否有电子邮件触发器?
是否有电子邮件验证存储过程?Microsoft SQL Server电子邮件验证
回答
我通常不推荐使用CLR存储过程,但这是一个很好的使用。 SQL的字符串处理功能并不好,但在CLR存储过程中使用.NET Regex很简单,您可以使用许多现有正则表达式模式之一来满足您的需求(例如these之一)。见Regular Expressions Make Pattern Matching And Data Extraction Easier
做不到这一点(有些DBA的是非常严格的启用CLR功能),或许这可能会感兴趣:
Working with email addresses in SQL Server
更新:响应在评论中质疑:一个CLR stored procedure是SQL Server实例中的数据库对象,它在Microsoft .NET Framework公共语言运行库(CLR)(如Visual Basic或C#)中创建的程序集中编程。
在创建SQL 服务器CLR存储过程包括以下步骤:
定义在由.NET Framework支持的语言 存储过程作为一类的静态方法。对于 有关如何编程 CLR存储过程的更多信息,请参阅CLR存储过程 过程。然后,编译该类到 通过使用适当的 语言编译器在.NET 框架中构建程序集。
通过使用CREATE ASSEMBLY 语句在SQL Server中注册程序集。有关 如何使用SQL 服务器中的程序集的更多信息,请参阅程序集。
使用CREATE PROCEDURE语句创建引用注册程序集 的存储过程。 Ref。
见Writing CLR Stored Procedures in C# - Introduction to C# (Part 1)
可以使用正则表达式类编写托管SP。根据RFC的电子邮件验证是很复杂的事情。 我们只需查询AD是否存在用户。
如果这些外部用户不在AD中,该怎么办? – 2010-02-09 14:53:01
我同意。最初的问题是如何验证电子邮件地址,而不是验证用户是否在Active Directory中。 – 2010-02-09 15:43:56
@米奇是确保它工作在我们_special_情况下 – 2010-02-09 17:17:34
SQL Server中没有内置的机制来验证电子邮件地址。
有许多正则表达式可以验证一个电子邮件地址(有些比其他的长得多),例如here,具体参见“官方标准:RFC2822”,例如,
现在,SQL Server没有内置支持运行正则表达式,所以如果你真的想给SQL内做到这一点,你需要使用CLR功能 - 即编写执行验证一个.NET函数,然后可以从SQL调用。
不过,我会验证电子邮件地址早些时候,它涉及到数据库之前。
ONY我希望把尽量靠近数据库级别尽可能验证。不在数据库级别实施的规则只是一个建议。 – 2010-02-09 15:45:40
我听到你在说什么,我不是说我不同意完全......但是,它至少应该* *也可以做得比较早(即越早,你可以验证输入,赶上不好的数据,越快用户可以通知==更好的用户体验)。这是一个经典的例子,你可以使用SQL CLR(公共语言运行时)在数据库级别实现这一点(SQL Server中运行的.NET代码) – AdaTheDev 2010-02-09 16:17:49
如果OLE自动化启用,您可以轻松创建一个UDF来处理正则表达式,然后只需调用:
CASE WHEN dbo.RegExFind
(
'[email protected]',
'^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9.-]*[a-z0-9]\.[a-z][a-z]+$',
1 -- Case-insensitive or not
) = 1 THEN 'OK' ELSE 'Not OK' END
我不记得在那里我得到了我的RegExFind()
UDF的代码,但它看起来像代码已经出现在StackOverflow,here。
- 1. Android电子邮件验证与Firebase电子邮件验证
- 2. SQL电子邮件验证约束
- 3. SQL Server存储过程的电子邮件验证
- 4. 在sql server 2008中的电子邮件验证?
- 5. CakePHP电子邮件验证
- 6. 验证电子邮件
- 7. rspec电子邮件验证
- 8. 验证电子邮件
- 9. Firebase电子邮件验证
- 10. ResearchKit:验证电子邮件
- 11. Jquery - 验证电子邮件
- 12. 电子邮件验证javascript
- 13. JavaScript电子邮件验证
- 14. 电子邮件验证:JavaScript
- 15. 电子邮件验证 - HTML
- 16. NSRegularExpression验证电子邮件
- 17. 电子邮件验证PHP
- 18. 梨电子邮件验证
- 19. OpenERP电子邮件验证
- 20. JavaScript电子邮件验证 - @
- 21. PHP - 电子邮件验证
- 22. 电子邮件验证
- 23. 电子邮件验证/ PrimeFaces
- 24. 电子邮件验证php
- 25. 电子邮件验证
- 26. Html电子邮件验证
- 27. 电子邮件ID验证
- 28. 电子邮件验证
- 29. PHP电子邮件验证
- 30. PHP电子邮件验证
什么是CLR存储过程?这与存储过程相同吗?首字母缩略词CLR让我感到困惑。 – 2010-02-09 15:44:38
CLR是通用语言运行时 - 存储过程CLR(或功能等)允许你写在C#中的程序,而是直接从T-SQL调用它。 – onupdatecascade 2010-02-10 21:42:30