Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Funkcja weryfikacji poczty e-mail SQL za pomocą Regex

Krótka odpowiedź brzmi:nie, nie da się tego zrobić. Składnia LIKE nie jest tym samym (i o wiele mniej wydajnym niż) wyrażeniami regularnymi. Zobacz także Wyrażenia regularne SQL Server w T-SQL

Ale możesz przeskoczyć do .Net i tam dopasować. Możesz utworzyć instancję VBScript.RegExp wewnątrz T-SQL przy użyciu sp_OACreate i użyj tego.

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

Rzuć okiem na Błąd weryfikacji adresu e-mail Regex - za pomocą JavaScript aby sprawdzić, czy chcesz być nieco mniej restrykcyjny w kwestii dozwolonych znaków.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa RANK() w SQL Server

  2. Tworzenie nazw tabel będących zastrzeżonymi słowami/słowami kluczowymi w MS SQL Server

  3. Implementacja zabezpieczeń na poziomie wiersza w SQL Server 2008

  4. Użyj CRYPT_GEN_RANDOM(), aby utworzyć kryptograficzną, losową liczbę w SQL Server

  5. CONCAT_WS() dla SQL Server