2012-12-04 35 views
2

如何驗證電子郵件是否有效?在sql server 2008中的電子郵件驗證?

例如:

+3

看看http://stackoverflow.com/questions/423606/t-sql-checking-for-email-format –

+0

我不認爲有這樣做的一個萬無一失的方式,除了發送給它,看看是否你會得到一個錯誤。即使您能夠檢測到某個地址在語法上是否有效,也無法分辨該電子郵件地址是否存在,或者無論如何您都不會嘗試發送是否成功。 – Bridge

回答

1

有一個新的有效的方式做到這一點是延長.NET功能爲SQL。

http://msdn.microsoft.com/en-us/magazine/cc163473.aspx

一個現成的源代碼查看細節正則表達式匹配的http://www.codeproject.com/Articles/42764/Regular-Expressions-in-MS-SQL-Server-2005-2008。現在

用於電子郵件的簡單的正則表達式應該爲你做 希望魔術能夠幫助

+0

謝謝,我們可以在DB中執行sql server功能 –

+0

@muralikrishna:在提供的兩個鏈接處檢查代碼。您編寫匹配C#代碼的正則表達式,然後在SQL中調用該函數。 –

+0

感謝很多我會盡量讓你知道 –

3

這裏是創建具有特定規則的表郵件地址爲(正則表達式)的例子。然後用sql查詢模式(Regexp)的例子。有了這個,你應該能夠做你想做

使用正則表達式創建表什麼

create table Contacts (
FirstName nvarchar(30), 
LastName nvarchar(30), 
EmailAddress nvarchar(30) CHECK (dbo.RegExMatch('[a-zA-Z0-9_\-][email protected]([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz)', EmailAddress)=1), 
USPhoneNo nvarchar(30) CHECK (dbo.RegExMatch('\([1-9][0-9][0-9]\) [0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]', UsPhoneNo)=1)) 
INSERT INTO [talend].[dbo].[Contacts] 
([FirstName] 
,[LastName] 
,[EmailAddress] 
,[USPhoneNo]) 
VALUES 
('Hallam' 
,'Amine' 
,'[email protected]’ 
,'0129-2090-1092') 
,('encoremoi' 
,'nimportequoi' 
,'[email protected]' 
,'(122) 190-9090') 
GO 

執行與正則表達式

SELECT [FirstName] 
,[LastName] 
,[EmailAddress] 
,[USPhoneNo] 
FROM [talend].[dbo].[Contacts] 
where [talend].[dbo].RegExMatch([EmailAddress],'[a-zA-Z0-9_\-][email protected]([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)') = 1 

功能代碼的請求SQL

using System; 
using Microsoft.SqlServer.Server; 
using System.Text.RegularExpressions; 
public partial class RegExBase 
{ 
[SqlFunction(IsDeterministic = true, IsPrecise = true)] 
public static int RegExMatch(string matchString , string pattern) 
{ 
Regex r1 = new Regex(pattern.TrimEnd(null)); 
if (r1.Match(matchString.TrimEnd(null)).Success == true) 
{ 
return 1 ; 
} 
else 
{ 
return 0 ; 
} 
} 
}; 

更多解釋在這裏展示的部份教程 - >http://www.google.ch/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&ved=0CGkQFjAF&url=http%3A%2F%2Fwww.talendforge.org%2Fbugs%2Ffile_download.php%3Ffile_id%3D4729%26type%3Dbug&ei=f8C9UKTMBNSN4gTo0IHYDg&usg=AFQjCNG-ezRtC9TdcJXuXGl4T8KX4zbUww&sig2=Fpgm5UTYOK4dpsaMfNCCyQ&cad=rja

我希望這可以幫助您

+0

感謝您的答覆..這是我的測試數據[email protected]有效 '[email protected]有效 [email protected]有效 t'[email protected]有效藿以驗證它 [email protected]無效 @ test.com無效 測試@無效 測試@@ test.com無效 測試@ test..com無效 測試@測試。無效 test.com無效 test @ test @ test。com無效 –

+0

好的,我編輯了我的完整回覆 –

+0

非常感謝,更多的澄清,我必須創建功能代碼... –