sql >> Base de Datos >  >> RDS >> Sqlserver

Función de verificación de correo electrónico SQL usando Regex

La respuesta corta es que no, no se puede hacer. La sintaxis de ME GUSTA no es lo mismo que (y mucho menos poderoso que) las expresiones regulares. Consulte también Expresiones regulares de SQL Server en T-SQL

Pero puede hacer el salto a .Net y hacer la coincidencia allí. Puede instanciar un VBScript.RegExp dentro de T-SQL usando sp_OACreate y usa eso.

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

Eche un vistazo a Error de verificación de correo electrónico Regex - usando JavaScript para ver si quieres ser un poco menos restrictivo sobre qué caracteres están permitidos.