Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Функция за проверка на SQL имейл с помощта на Regex

Краткият отговор е, че не, не може да се направи. Синтаксисът за LIKE не е същото като (и много по-малко мощно от) регулярните изрази. Вижте също SQL Server регулярни изрази в T-SQL

Но можете да преминете към .Net и да направите съвпадението там. Можете да създадете екземпляр на VBScript.RegExp вътре в T-SQL с помощта на sp_OACreate и използвайте това.

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

Надникнете в Грешка при потвърждаване на имейл с Regex - използване на JavaScript за да видите дали искате да бъдете малко по-малко ограничителни относно това какви знаци са разрешени.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL - Псевдоним с помощта на =срещу as

  2. Може ли INNER JOIN да предложи по-добра производителност от EXISTS

  3. Шестнадесетичната стойност 0x00 е невалиден знак

  4. Най-бързият начин за актуализиране на 120 милиона записа

  5. Как мога да накарам тригер да се задейства на всеки вмъкнат ред по време на INSERT INTO Table (и т.н.) SELECT * FROM Table2?