使用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