sql >> Database >  >> RDS >> Sqlserver

SQL e-mailverificatiefunctie met Regex

Het korte antwoord is:nee, dat kan niet. De syntaxis voor LIKE is niet hetzelfde als (en veel minder krachtig dan) reguliere expressies. Zie ook SQL Server Reguliere expressies in T-SQL

Maar je kunt de sprong naar .Net maken en daar de matching doen. U kunt een VBScript.RegExp instant instantiëren binnen T-SQL met behulp van sp_OACreate en gebruik dat.

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

Neem een ​​kijkje op Regex e-mailverificatiefout - JavaScript gebruiken om te zien of je wat minder restrictief wilt zijn over welke tekens zijn toegestaan.



  1. Wat is de eenvoudigste manier om gegevens van een Java-programma op te slaan in MySQL?

  2. Hoe schrijf je een hoofdletterongevoelige query voor zowel MySQL als Postgres?

  3. PHP MySQL-zoekopdracht met meerdere criteria

  4. Kan PostgreSQL niet starten