sql >> Database teknologi >  >> RDS >> Sqlserver

SQL e-mail-bekræftelsesfunktion ved hjælp af regulært udtryk

Det korte svar er, at nej, det kan ikke lade sig gøre. Syntaksen for LIKE er ikke det samme som (og langt mindre kraftfuldt end) regulære udtryk. Se også SQL Server Regulære udtryk i T-SQL

Men du kan hoppe til .Net og lave matchningen der. Du kan instansiere en VBScript.RegExp inde i T-SQL ved hjælp af sp_OACreate og brug 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

Tag et kig på Regex e-mailbekræftelsesfejl - ved hjælp af JavaScript for at se, om du vil være en smule mindre restriktiv med hensyn til, hvilke tegn der er tilladt.



  1. Sådan installeres SQL Server på Red Hat 8

  2. ugyldig hukommelsesadresse eller nul pointer dereference golang database

  3. excel vba mysql ado-forbindelse

  4. Hvordan man sporer hvilke tabeller/visninger/etc. afhænger af en tabel i Oracle