none
MCITP系列之Lewis’s gift time – 20070201- SQL Server 2005 CLR物件開發 RRS feed

  • 問題

  • [活動方式]

    老師於課程結束當天在論壇上po出當天課程內容相關問題,在「2天內」大家皆可踴躍回答,老師會選取出最快且最完整的回答,將之標示為「正確答案」,得獎者老師會於下次課堂上公佈(當然你也可以在2天後上論壇查看自己是否有被特別標註為解答),認真的幸運兒可能就是你喔 : P

    [注意事項]

    得獎者我們會查看你登入論壇的mail並寄信與您連絡,如果您等不到聯繫也可直接上論壇告知我們。

    [Question]

     3.請設計一個CLR的布林函數,引用System.Text.RegularExpressions命名空間,進行輸入資料的Email格式驗證,過程中要符合[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+(com|org|edu) 的格式下, 當驗證 lewisdba@com 是回傳false ,但是當輸入 lewisdba@microsoft.com 便可以回傳True
    2007年2月4日 上午 02:59

解答

  • Imports System

    Imports System.Data

    Imports System.Data.SqlClient

    Imports System.Data.SqlTypes

    Imports Microsoft.SqlServer.Server

    Imports System.Text.RegularExpressions

    Partial Public Class UserDefinedFunctions

      <Microsoft.SqlServer.Server.SqlFunction (isprecise:=True, isdeterministic:=True)>

      Public Shared Function fnRegExpMatch(ByVal pattern As String, ByVal userString As String) As Boolean

         Dim ureg As Regex = New Regex(pattern.TrimEnd(Nothing))

         Return ure.Match(userString.TrimEnd(Nothing)).Success

      End Function

    End Class

    用法:

    Select CASE dbo.fnRegExpMatch('[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+(com|org|edu)','lewisdba@com')

    WHEN 0 THEN 'PASS'

    WHEN 1 THEN 'Fail'

    END

    --結果  lewisdba@microsoft.com ->PASS, lewisdba@com ->Fail

    2007年2月4日 下午 04:18