sql >> Databasteknik >  >> RDS >> Sqlserver

SQL e-postverifieringsfunktion med Regex

Det korta svaret är att nej, det kan inte göras. Syntaxen för LIKE är inte samma sak som (och mycket mindre kraftfull än) reguljära uttryck. Se även SQL Server Regular expressions in T-SQL

Men du kan hoppa till .Net och göra matchningen där. Du kan instansiera en VBScript.RegExp inuti T-SQL med sp_OACreate och använd det.

CREATE FUNCTION dbo.isValidEmailFormat
(
    @Email varchar(100)
)
RETURNS bit
AS
BEGIN
    DECLARE @pattern varchar(4000)
    SET @pattern = '[a-zA-Z0-9_\-][email protected]([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)'
    DECLARE @Result bit

    DECLARE @objRegexExp INT
    EXEC sp_OACreate 'VBScript.RegExp', @objRegexExp OUT

    EXEC sp_OASetProperty @objRegexExp, 'Pattern', @pattern
    EXEC sp_OASetProperty @objRegexExp, 'IgnoreCase', 1
    EXEC sp_OASetProperty @objRegexExp, 'MultiLine', 0
    EXEC sp_OASetProperty @objRegexExp, 'Global', false
    EXEC sp_OASetProperty @objRegexExp, 'CultureInvariant', true

    EXEC sp_OAMethod @objRegexExp, 'Test', @Result OUT, @Email

    EXEC sp_OADestroy @objRegexExp

    RETURN @Result
END

Ta en titt på Regex e-postverifieringsfel - använder JavaScript för att se om du vill vara lite mindre restriktiv för vilka tecken som är tillåtna.



  1. Personsökningsval, i databasen eller i webbapplikationen

  2. SSRS Report Manager ställer in standard zoomnivå

  3. MySQL Skicka tabellnamn till markörval

  4. Dold funktion:Dra och släpp åtkomstobjekt mellan filer