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

Funzione di verifica dell'e-mail SQL tramite Regex

La risposta breve è che no, non si può fare. La sintassi per MI PIACE non è la stessa cosa (e molto meno potente delle) espressioni regolari. Vedere anche Espressioni regolari di SQL Server in T-SQL

Ma puoi passare a .Net e fare la corrispondenza lì. Puoi creare un'istanza di un VBScript.RegExp all'interno di T-SQL utilizzando sp_OACreate e usalo.

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

Dai un'occhiata a Errore di verifica dell'e-mail Regex - utilizzando JavaScript per vedere se vuoi essere un po' meno restrittivo su quali caratteri sono consentiti.