SQL ограничение E-Mail

У меня есть назначение, которое я должен сделать в диспетчере SQL Server.

У меня есть база данных и таблица с именем User, Под пользователем есть столбец с именем e-mail,

Назначение заключается в создании нового ограничения для этой таблицы, которое влияет на столбец электронной почты.

Должен быть только один@и минимум один.'

Не допускается использование каких-либо специальных символов, таких как (!, ", #, ¤, %и т. д.) <- это не включает '@' и '.'

Я пробовал разные вещи, но не могу заставить его работать. Также следует заметить, что я новичок.

Спасибо за вашу помощь

1 ответ

В качестве альтернативы вы можете создать свою таблицу с ограничением, как это, которое проверит, удовлетворяют ли все данные условия. Пожалуйста, измените данные таблицы с вашими

Если таблица не существует

CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Email  varchar(255),
CHECK (len(Email) - len(replace(Email,'@',''))=1 AND len(Email) - 
len(replace(Email,'.',''))=1 AND CHARINDEX('!',Email)!>0 AND 
CHARINDEX('#',Email)!>0 AND CHARINDEX('%',Email)!>0 AND 
CHARINDEX('¤',Email)!>0 AND CHARINDEX('"',Email)!>0)
);

Некоторые отклоненные входы

some@some.!%#¤com

some@some.!%#com

some@some.%#com

some@some.#com

некоторые @ некоторые @ ком

! Некоторые @ некоторые @ ком

так далее...

Некоторые исключенные входы

some@some.com

some222@some.com

harry_porter@some.com

332@some.com

так далее....

Если у вас уже есть стол, то

 GO

 ALTER TABLE [dbo].[Yourtablename]  WITH CHECK ADD Constraint EmailConstraint CHECK  (((len([Email])-
 len(replace([Email],'@','')))=(1) AND (len([Email])-
 len(replace([Email],'.','')))=(1) AND charindex('!',[Email])<=(0) AND 
 charindex('#',[Email])<=(0) AND charindex('%',[Email])<=(0) AND 
 charindex('¤',[Email])<=(0) AND charindex('"',[Email])<=(0)))
 GO
Другие вопросы по тегам