sql >> Databáze >  >> RDS >> Sqlserver

Funkce ověření e-mailu SQL pomocí Regex

Krátká odpověď je, že ne, nelze to udělat. Syntaxe pro LIKE není stejný jako (a mnohem méně výkonný než) regulární výrazy. Viz také Regulární výrazy SQL Serveru v T-SQL

Ale můžete přeskočit na .Net a provést párování tam. Můžete vytvořit instanci VBScript.RegExp uvnitř T-SQL pomocí sp_OACreate a použijte to.

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

Podívejte se na Chyba ověření e-mailu Regex - pomocí JavaScriptu abyste zjistili, zda nechcete být o něco méně omezující v tom, jaké znaky jsou povoleny.



  1. Stránkování pomocí PDO s MySQL

  2. Zkrátit všechny tabulky v databázi MySQL jedním příkazem?

  3. Jaký je účinný způsob sledování, identifikace a hlášení každé „chybové zprávy“ vyvolané vaší aplikací?

  4. Naučte se používat příkaz CASE v SQL